我正在尝试从标准时间戳中的数据库中获取日期,并将其显示为ISO 8601.我无法轻松地在PHP中执行此操作,因此我尝试在SELECT语句中执行此操作。这就是我所拥有的,但它显示错误:
SELECT * FROM table_name ORDER BY id DESC DATE_FORMAT(date,"%Y-%m-%dT%TZ")
我做错了什么?
答案 0 :(得分:66)
DATE_FORMAT(DateColumn)
必须位于SELECT
列表中:
SELECT DATE_FORMAT(date, '%Y-%m-%dT%TZ') AS date_formatted
FROM table_name
ORDER BY id DESC
答案 1 :(得分:6)
这对我有用
DATE_FORMAT( CONVERT_TZ(`timestamp`, @@session.time_zone, '+00:00') ,'%Y-%m-%dT%TZ')
答案 2 :(得分:5)
为什么在PHP中很难做到这一点?
date("Y-m-d\TH:i:sO",strtotime($sqldata['time']));
无论如何,DATE_FORMAT
需要在字段中选择,而不是添加到最后。
答案 3 :(得分:5)
DATE_FORMAT仅适用于MySQL日期列,而不适用于时间戳。
UNIX时间戳是一个整数,包含自1970年1月1日UTC以来的秒数。要将其格式化为ISO 8601日期,您需要使用FROM_UNIXTIME()函数。
FROM_UNIXTIME采用与DATE_FORMAT相同的格式字符串,因此要格式化名为' created'的列。你&#d;
SELECT created /* e.g. 1288799488 */ ,
FROM_UNIXTIME(created,'%Y-%m-%dT%TZ') /* e.g. 2010-11-03T08:51:28Z */
FROM table_name
答案 4 :(得分:4)
从数据库加载日期字段并使用PHP将其转换为ISO格式是直截了当的;请参阅c
格式字符串到PHP date
:http://www.php.net/manual/en/function.date.php
echo date('c'); // expected "2013-03-08T14:45:37+05:00"
答案 5 :(得分:3)
您应该将DATE_FORMAT移动到查询的选择部分,如下所示:
SELECT *, DATE_FORMAT(date,"%Y-%m-%dT%TZ") AS date FROM table_name ORDER BY id DESC
答案 6 :(得分:2)
DATE_FORMAT(date, '%Y-%m-%dT%TZ')
应该在select
子句中。
SELECT DATE_FORMAT(date, '%Y-%m-%dT%TZ')
FROM table_name
ORDER BY id DESC