我尝试从数据库中以标准时间戳获取日期,并将其显示为ISO 8601。我无法在PHP中轻松完成此操作,因此我尝试在SELECT语句中完成此操作。这是我所拥有的,但它显示了一个错误:
SELECT * FROM table_name ORDER BY id DESC DATE_FORMAT(date,"%Y-%m-%dT%TZ")
我做错了什么?
i34xakig1#
DATE_FORMAT(DateColumn)必须在SELECT列表中:
DATE_FORMAT(DateColumn)
SELECT
SELECT DATE_FORMAT(date, '%Y-%m-%dT%TZ') AS date_formatted FROM table_name ORDER BY id DESC
e5njpo682#
这对我很有效
DATE_FORMAT( CONVERT_TZ(`timestamp`, @@session.time_zone, '+00:00') ,'%Y-%m-%dT%TZ')
omvjsjqw3#
DATE_FORMAT仅适用于MySQL日期列,而不适用于时间戳。UNIX时间戳是一个整数,包含自1970年1月1日UTC以来的秒数。要将其格式化为ISO 8601日期,需要改用FROM_UNIXTIME()函数。FROM_UNIXTIME采用与DATE_FORMAT相同的格式字符串,因此要格式化名为'created'的列,您需要:
SELECT created /* e.g. 1288799488 */ , FROM_UNIXTIME(created,'%Y-%m-%dT%TZ') /* e.g. 2010-11-03T08:51:28Z */ FROM table_name
9lowa7mx4#
从数据库加载日期字段并使用PHP将其转换为ISO格式是非常简单的;将c字符串转换为PHPx 1 m1n1x:http://www.php.net/manual/en/function.date.php
c
echo date('c'); // expected "2013-03-08T14:45:37+05:00"
xbp102n05#
为什么在PHP中很难做到这一点?
date("Y-m-d\TH:i:sO",strtotime($sqldata['time']));
无论如何,DATE_FORMAT需要在字段中选择,而不是附加到末尾。
DATE_FORMAT
4jb9z9bj6#
DATE_FORMAT(date, '%Y-%m-%dT%TZ')应该在select子句中。
DATE_FORMAT(date, '%Y-%m-%dT%TZ')
select
SELECT DATE_FORMAT(date, '%Y-%m-%dT%TZ') FROM table_name ORDER BY id DESC
vsmadaxz7#
您应该将DATE_FORMAT移动到查询的选择部分,如下所示:
SELECT *, DATE_FORMAT(date,"%Y-%m-%dT%TZ") AS date FROM table_name ORDER BY id DESC
7kjnsjlb8#
另一种支持任何timezone的DateTime解决方案:
timezone
SELECT CONCAT(DATE_FORMAT( `date` ,'%Y-%m-%dT%T'), TIME_FORMAT( TIMEDIFF(NOW(), UTC_TIMESTAMP), '+%H:%i') ) AS date_formatted;
添加日期的时区信息。
8条答案
按热度按时间i34xakig1#
DATE_FORMAT(DateColumn)
必须在SELECT
列表中:e5njpo682#
这对我很有效
omvjsjqw3#
DATE_FORMAT仅适用于MySQL日期列,而不适用于时间戳。
UNIX时间戳是一个整数,包含自1970年1月1日UTC以来的秒数。要将其格式化为ISO 8601日期,需要改用FROM_UNIXTIME()函数。
FROM_UNIXTIME采用与DATE_FORMAT相同的格式字符串,因此要格式化名为'created'的列,您需要:
9lowa7mx4#
从数据库加载日期字段并使用PHP将其转换为ISO格式是非常简单的;将
c
字符串转换为PHPx 1 m1n1x:http://www.php.net/manual/en/function.date.phpxbp102n05#
为什么在PHP中很难做到这一点?
无论如何,
DATE_FORMAT
需要在字段中选择,而不是附加到末尾。4jb9z9bj6#
DATE_FORMAT(date, '%Y-%m-%dT%TZ')
应该在select
子句中。vsmadaxz7#
您应该将DATE_FORMAT移动到查询的选择部分,如下所示:
7kjnsjlb8#
另一种支持任何
timezone
的DateTime解决方案:添加日期的时区信息。