从SQL Server DateTime中提取日期

4

我需要从SQL Server的datetime中获取日期,并格式化日期。(例如:01-Jan-2000) 我正在使用PHP。

目前,SQL返回的是2009-02-13 22:00:00.000


请确保考虑到数据库是否使用UTC(或其他时区,我强烈建议在数据中仅使用UTC)以及数据的呈现方式。实际日期可能因解释方式而异--请注意日期中没有TZ偏移量(并且从SQL中的datetime也不会有任何偏移量 :-))。 - user166390
1
@user569403:你正在使用哪个PHP函数解析这个日期?strtotime()能够正确地解析这个日期,尽管它会丢弃微秒部分。如果直接对这个字符串使用date()函数是不可能的,因为date()需要一个整数时间戳……奇怪的是,即使date()无法接受或解析浮点数,它也有一个u格式来返回微秒。玩呢去吧。 - bob-the-destroyer
3个回答

15
echo date('d-M-Y', strtotime($datetime_from_db));

1
@user569403:其中$datetime_from_db是查询返回的日期列。有关strtotime()可以接受哪些字符串的示例,请参见手册页面:http://php.net/manual/en/function.strtotime.php。有关使用`date()`重新格式化日期的示例(例如Dan Grossman的示例),请参见http://us.php.net/manual/en/function.date.php。 - bob-the-destroyer
这就是我之前所做的,但不知何故它只打印出了1970年1月1日,现在我正在使用explode函数并从该日期时间中获取日期部分。 - Khurram Ijaz
如果你得到了 1-Jan-1970,那么很可能是 $date_from_db 的值不正确。你应该将其打印到屏幕上以验证它是否符合你的期望,如果你得到了 1-Jan-1970。 - Logan Bailey
我认为分数秒不是strtotime解析的支持格式,所以他需要从数据库中取出日期的子字符串。 - Dan Grossman
你是正确的 - strtotime() 返回一个 int,所以即使它正确解析了 OP 的日期,它也不会返回微秒。 - bob-the-destroyer

1

你可以直接从mySQL查询中以任何格式汇总数据,

SELECT DATE_FORMAT(column_name, '%d-%b-%Y') FROM tablename

0
将以下代码添加到 connectionInfo => 'ReturnDatesAsStrings'=>true

$connectionInfo = array( "Database"=>"AdventureWorks", 'ReturnDatesAsStrings '=> true);


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接