다음을 통해 공유


방법: PDO_SQLSRV 드라이버를 사용하여 날짜 및 시간 형식을 PHP DateTime 개체로 검색

PHP 드라이버 다운로드

버전 5.6.0에 추가된 이 기능은 MICROSOFT Drivers for PHP for SQL Server용 PDO_SQLSRV 드라이버를 사용하는 경우에만 유효합니다.

날짜/시간 유형을 DateTime 개체로 검색

PDO_SQLSRV를 사용하는 경우 날짜 및 시간 형식(smalldatetime, datetime, date, time, datetime2, datetimeoffset)은 기본적으로 문자열로 반환됩니다. PDO::ATTR_STRINGIFY_FETCHES 및 PDO::SQLSRV_ATTR_FETCHES_NUMERIC_TYPE 특성 모두 아무런 영향도 미치지 않습니다. 날짜 및 시간 형식을 PHP DateTime 개체로 검색하려면 연결 또는 문 특성 PDO::SQLSRV_ATTR_FETCHES_DATETIME_TYPEtrue로 설정합니다(기본적으로 false임).

참고 항목

이 연결 또는 문 특성은 날짜 및 시간 형식에 대한 일반 페치에만 적용됩니다. DateTime 개체는 출력 매개 변수로 지정할 수 없기 때문입니다.

예시 - 연결 특성 사용

다음 예시에서는 명확성을 위해 오류 검사를 생략합니다. 다음은 연결 특성을 설정하는 방법을 보여줍니다.

<?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);
?>

예시 - 문 특성 사용

이 예시에서는 문 특성을 설정하는 방법을 보여줍니다.

<?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);
?>

예시 - 문 옵션 사용

또는 문 특성을 옵션으로 설정할 수도 있습니다.

<?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);
?>

예시 - 날짜/시간 형식을 문자열로 검색

다음 예시는 그 반대의 결과를 얻는 방법을 보여줍니다(기본적으로 false이므로 실제로는 필요하지 않음).

<?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);
?>

참고 항목

데이터 검색

SQLSRV 드라이버를 사용하여 날짜 및 시간 형식을 문자열로 검색