将mssql datetime对象转换为PHP字符串

Nic*_*ick 14 php sql-server datetime

我从数据库中获取一些信息并且记录采用MSSQL DateTime格式,当我返回时,它在我的数组中显示如下:

[arrayItem] => DateTime Object
    (
        [date] => 2008-06-05 09:14:11
        [timezone_type] => 3
        [timezone] => Europe/London
    )
Run Code Online (Sandbox Code Playgroud)

当我尝试将其提取为数组(即$array[arrayItem][date])时出现错误:

致命错误:无法使用DateTime类型的对象作为数组

我还尝试在将数据传递给PHP之前在SQL中格式化数据,并且strtotime函数并没有任何乐趣.

任何建议都会非常受欢迎,我正在用这个推出我的头发!

谢谢

Bri*_*ian 26

这也让我感到很沮丧.

希望这会帮助你,因为它有我自己:)

http://af-design.com/blog/2010/03/13/microsoft-sql-server-driver-for-php-returns-datetime-object/

这是该页面所说内容的要点,以防链接出现故障.

查询定义为a的列时datetime,本机PHP SQL Server扩展返回一个字符串,其中Microsoft扩展返回DateTime对象.因此,如果您需要字符串,则需要相应地调整代码.

它继续解释您可以简单地向数据库的请求添加一个附加参数,指定您希望将日期作为字符串返回. 只需添加ReturnDatesAsStrings参数,指定即可true.

例:

$connectionParams = array(
    'USR'=>'user',
    'PASS'=>'pass',
    'Database'='myDatabase',
    'ReturnDatesAsStrings'=>true  //<-- This is the important line
);
$conn = sqlsrv_connect('127.0.0.1',$connectionParams);
Run Code Online (Sandbox Code Playgroud)

然后,您可以$conn像定期使用sqlsrv数据库连接一样,只有日期将作为字符串返回,而不是DateTime对象.

或者,如果您想要的只是日期时间之外的时间戳,您可以调用:

$myDateTimeObject->getTimestamp();
Run Code Online (Sandbox Code Playgroud)


Sha*_*ngh 6

你应该像下面这样访问它们.关联索引arrayItem包含一个具有某些属性的对象.

$array['arrayItem']->date;
$array['arrayItem']->timezone_type;
Run Code Online (Sandbox Code Playgroud)