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. 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 Data

Mengambil Jenis Tanggal dan Waktu sebagai String Menggunakan Driver SQLSRV