Cara: Mengambil Jenis Tanggal dan Waktu sebagai Objek DateTime PHP Menggunakan Driver PDO_SQLSRV
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. Atribut PDO::ATTR_STRINGIFY_FETCHES maupun PDO::SQLSRV_ATTR_FETCHES_NUMERIC_TYPE tidak memiliki efek apa pun. 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 berkala karena objek DateTime tidak dapat ditentukan sebagai parameter output.
Contoh - gunakan atribut koneksi
Contoh berikut menghilangkan pemeriksaan kesalahan untuk kejelasan. Yang satu 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 Jenis Tanggal dan Waktu sebagai String Menggunakan Driver SQLSRV