방법: SQLSRV 드라이버를 사용하여 날짜 및 시간 형식을 문자열로 검색
Microsoft Drivers for PHP for SQL Server용 SQLSRV 드라이버를 사용하는 경우 연결 문자열 또는 문 수준에서 다음 옵션을 지정하여 문자열로 날짜 및 시간 유형(smalldatetime, datetime, date, time, datetime2 및 datetimeoffset)을 검색할 수 있습니다
'ReturnDatesAsStrings'=>true
기본값은 false이며, 이는 smalldatetime, datetime, date, time, datetime2 및 datetimeoffset 유형이 PHP 날짜/시간 개체로 반환됨을 의미합니다. 이 옵션이 문 수준에서 설정된 경우 연결 수준 설정을 재정의합니다.
기본적으로 PDO_SQLSRV 드라이버는 날짜 및 시간 형식을 문자열로 반환합니다. PHP 날짜/시간 개체로 검색하려면 방법: PDO_SQLSRV를 사용하여 날짜 및 시간 형식을 PHP Datetime 개체로 검색을 참조하세요.
예 1
다음 예시에서는 날짜 및 시간 형식을 문자열로 검색하도록 지정하는 구문을 보여줍니다.
<?php
$serverName = "MyServer";
$connectionInfo = array("Database"=>"AdventureWorks", 'ReturnDatesAsStrings'=> true);
$conn = sqlsrv_connect($serverName, $connectionInfo);
if ($conn === false) {
echo "Could not connect.\n";
die(print_r(sqlsrv_errors(), true));
}
sqlsrv_close($conn);
?>
예시 2
다음 예시는 "ReturnDatesAsStrings" => false
으로 연결한 경우에도 문자열을 검색할 때 UTF-8을 지정하여 날짜를 문자열로 검색할 수 있음을 보여줍니다.
<?php
$serverName = "MyServer";
$connectionInfo = array("Database"=>"AdventureWorks", "ReturnDatesAsStrings" => false);
$conn = sqlsrv_connect($serverName, $connectionInfo);
if ($conn === false) {
echo "Could not connect.\n";
die(print_r(sqlsrv_errors(), true));
}
$tsql = "SELECT VersionDate FROM AWBuildVersion";
$stmt = sqlsrv_query($conn, $tsql);
if ($stmt === false) {
echo "Error in statement preparation/execution.\n";
die(print_r(sqlsrv_errors(), true));
}
sqlsrv_fetch($stmt);
// retrieve date as string
$date = sqlsrv_get_field($stmt, 0, SQLSRV_PHPTYPE_STRING("UTF-8"));
if ($date === false) {
die(print_r(sqlsrv_errors(), true));
}
echo $date;
sqlsrv_close($conn);
?>
예제 3
다음 예시는 연결 문자열에 UTF-8 및 "ReturnDatesAsStrings" => true
을 지정하여 날짜를 문자열로 검색하는 방법을 보여줍니다.
<?php
$serverName = "MyServer";
$connectionInfo = array("Database"=>"AdventureWorks", 'ReturnDatesAsStrings'=> true, "CharacterSet" => 'utf-8');
$conn = sqlsrv_connect($serverName, $connectionInfo);
if ($conn === false) {
echo "Could not connect.\n";
die(print_r(sqlsrv_errors(), true));
}
$tsql = "SELECT VersionDate FROM AWBuildVersion";
$stmt = sqlsrv_query($conn, $tsql);
if ($stmt === false) {
echo "Error in statement preparation/execution.\n";
die(print_r(sqlsrv_errors(), true));
}
sqlsrv_fetch($stmt);
// retrieve date as string
$date = sqlsrv_get_field($stmt, 0);
if ($date === false) {
die(print_r(sqlsrv_errors(), true));
}
echo $date;
sqlsrv_close($conn);
?>
예시 4
다음 예시는 날짜를 PHP 유형으로 검색하는 방법을 보여줍니다. 'ReturnDatesAsStrings'=> false
는 기본적으로 설정되어 있습니다.
<?php
$serverName = "MyServer";
$connectionInfo = array("Database"=>"AdventureWorks");
$conn = sqlsrv_connect($serverName, $connectionInfo);
if ($conn === false) {
echo "Could not connect.\n";
die(print_r(sqlsrv_errors(), true));
}
$tsql = "SELECT VersionDate FROM AWBuildVersion";
$stmt = sqlsrv_query($conn, $tsql);
if ($stmt === false) {
echo "Error in statement preparation/execution.\n";
die(print_r(sqlsrv_errors(), true));
}
sqlsrv_fetch($stmt);
// retrieve date as a DateTime object, then convert to string using PHP's date_format function
$date = sqlsrv_get_field($stmt, 0);
if ($date === false) {
die(print_r(sqlsrv_errors(), true));
}
$date_string = date_format($date, 'jS, F Y');
echo "Date = $date_string\n";
sqlsrv_close($conn);
?>
예시 5
문 수준에서 ReturnDatesAsStrings 옵션은 해당 연결 옵션을 재정의합니다.
<?php
$serverName = 'MyServer';
$connectionInfo = array('Database' => 'MyDatabase', 'ReturnDatesAsStrings' => false);
$conn = sqlsrv_connect($serverName, $connectionInfo);
if ($conn === false) {
echo "Could not connect.\n";
die(print_r(sqlsrv_errors(), true));
}
$tableName = 'MyTable';
$options = array('ReturnDatesAsStrings' => true);
$query = "SELECT DateTimeCol FROM $tableName";
$stmt = sqlsrv_prepare($conn, $query, array(), $options);
if ($stmt === false) {
echo "Error in statement preparation/execution.\n";
die(print_r(sqlsrv_errors(), true));
}
sqlsrv_execute($stmt);
// Expect the fetched value to be a string
$field = sqlsrv_get_field($stmt, 0);
echo $field . PHP_EOL;
sqlsrv_close($conn);
?>