Bagikan melalui


Cara: Mengambil Jenis Tanggal dan Waktu sebagai Objek DateTime PHP Menggunakan Driver PDO_SQLSRV

Unduh driver PHP

Fitur ini, ditambahkan dalam versi 5.6.0, hanya valid saat menggunakan driver PDO_SQLSRV untuk Driver Microsoft untuk PHP untuk SQL Server.

Untuk mengambil jenis tanggal dan waktu sebagai objek DateTime

Saat menggunakan PDO_SQLSRV, jenis tanggal dan waktu (smalldatetime, datetime, date, time, datetime2, dan datetimeoffset) secara default dikembalikan sebagai string. Baik atribut PDO::ATTR_STRINGIFY_FETCHES maupun PDO::SQLSRV_ATTR_FETCHES_NUMERIC_TYPE tidak berpengaruh. Untuk mengambil jenis tanggal dan waktu sebagai objek DateTime PHP , atur atribut PDO::SQLSRV_ATTR_FETCHES_DATETIME_TYPE koneksi atau pernyataan ke true ( salah secara default).

Catatan

Atribut koneksi atau pernyataan ini hanya berlaku untuk pengambilan jenis tanggal dan waktu secara teratur karena objek DateTime tidak dapat ditentukan sebagai parameter output.

Contoh - gunakan atribut koneksi

Contoh berikut menghilangkan pemeriksaan kesalahan untuk kejelasan. Yang ini menunjukkan cara mengatur atribut koneksi:

<?php
$server = 'myserver';
$databaseName = 'mydatabase';
$username = 'myusername';
$passwd = 'mypasword';
$tableName = 'mytable';

$conn = new PDO("sqlsrv:Server = $server; Database = $databaseName", $username, $passwd);

// To set the connection attribute
$conn->setAttribute(PDO::SQLSRV_ATTR_FETCHES_DATETIME_TYPE, true);
$query = "SELECT DateTimeCol FROM $tableName";
$stmt = $conn->prepare($query);
$stmt->execute();

// Expect a DateTimeCol value as a PHP DateTime type
$row = $stmt->fetch(PDO::FETCH_ASSOC);
var_dump($row);

unset($stmt);
unset($conn);
?>

Contoh - gunakan atribut pernyataan

Contoh ini menunjukkan cara mengatur atribut pernyataan:

<?php
$database = "test";
$server = "(local)";
$conn = new PDO("sqlsrv:server = $server; Database = $database", "", "");
$query = "SELECT DateTimeCol FROM myTable";
$stmt = $conn->prepare($query);
$stmt->setAttribute(PDO::SQLSRV_ATTR_FETCHES_DATETIME_TYPE, true);
$stmt->execute();

// Expect a DateTimeCol value as a PHP DateTime type
$row = $stmt->fetch(PDO::FETCH_NUM);
var_dump($row);

unset($stmt);
unset($conn);
?>

Contoh - gunakan opsi pernyataan

Atau, atribut pernyataan dapat diatur sebagai opsi:

<?php
$database = "test";
$server = "(local)";
$conn = new PDO("sqlsrv:server = $server; Database = $database", "", "");

$dateObj = null;
$query = "SELECT DateTimeCol FROM aTable";
$options = array(PDO::SQLSRV_ATTR_FETCHES_DATETIME_TYPE => true);
$stmt = $conn->prepare($query, $options);
$stmt->execute();
$stmt->bindColumn(1, $dateObj, PDO::PARAM_LOB);
$row = $stmt->fetch(PDO::FETCH_BOUND);
var_dump($dateObj);

unset($stmt);
unset($conn);
?>

Contoh - mengambil jenis tanggalwaktu sebagai string

Contoh berikut menunjukkan cara mencapai kebalikannya (yang tidak benar-benar diperlukan karena salah secara default):

<?php
$database = "MyData";
$conn = new PDO("sqlsrv:server = (local); Database = $database");

$dateStr = null;
$query = 'SELECT DateTimeCol FROM table1';
$options = array(PDO::SQLSRV_ATTR_FETCHES_DATETIME_TYPE => false);
$stmt = $conn->prepare($query, $options);
$stmt->execute();
$stmt->bindColumn(1, $dateStr);
$row = $stmt->fetch(PDO::FETCH_BOUND);
echo $dateStr . PHP_EOL;

unset($stmt);
unset($conn);
?>

Lihat juga

Mengambil Data

Mengambil Jenis Tanggal dan Waktu sebagai String Menggunakan Driver SQLSRV