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

PHP 드라이버 다운로드

Microsoft Drivers for PHP for SQL Server용 SQLSRV 드라이버를 사용하는 경우 연결 문자열 또는 문 수준에서 다음 옵션을 지정하여 문자열로 날짜 및 시간 유형(smalldatetime, datetime, date, time, datetime2datetimeoffset)을 검색할 수 있습니다

'ReturnDatesAsStrings'=>true

기본값은 false이며, 이는 smalldatetime, datetime, date, time, datetime2datetimeoffset 유형이 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);
?>

참고 항목

데이터 검색

방법: PDO_SQLSRV를 사용하여 날짜 및 시간 형식을 PHP Datetime 개체로 검색