将 MySQL SELECT 中的日期格式设置为 ISO 8601
我试图以标准时间戳从数据库中获取日期并将其显示为 ISO 8601。我无法在 PHP 中轻松完成此操作,因此我尝试在 SELECT 语句中执行此操作。这就是我所拥有的,但它显示一个错误:
SELECT * FROM table_name ORDER BY id DESC DATE_FORMAT(date,"%Y-%m-%dT%TZ")
我做错了什么?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(8)
DATE_FORMAT(DateColumn)
必须位于SELECT
列表中:The
DATE_FORMAT(DateColumn)
has to be in theSELECT
list:这对我有用
This worked for me
DATE_FORMAT 仅适用于 MySQL 日期列,不适用于时间戳。
UNIX 时间戳是一个整数,包含自 UTC 1970 年 1 月 1 日以来的秒数。要将其格式化为 ISO 8601 日期,您需要使用 FROM_UNIXTIME() 函数。
FROM_UNIXTIME 采用与 DATE_FORMAT 相同的格式字符串,因此要格式化名为“created”的列,您需要:
DATE_FORMAT only works on MySQL date columns, not timestamps.
A UNIX timestamp is an integer containing the number of seconds since Jan 1, 1970 UTC. To format this as an ISO 8601 date you need to use the FROM_UNIXTIME() function instead.
FROM_UNIXTIME takes the same format strings as DATE_FORMAT, so to format a column named 'created' you'd:
从数据库加载日期字段并使用 PHP 将其转换为 ISO 格式非常简单;请参阅 PHP
date
的c
格式字符串:http://www.php.net/manual/en/function.date.phpLoading the date field from the database and converting it to ISO format with PHP is straight-forward; see the
c
format string to PHPdate
: http://www.php.net/manual/en/function.date.php为什么用 PHP 很难做到这一点?
无论如何,
DATE_FORMAT
需要位于要选择的字段中,而不是附加到最后。Why is it hard to do it in PHP?
Anyway, that
DATE_FORMAT
needs to be in the fields to select, not tacked on to the end.DATE_FORMAT(date, '%Y-%m-%dT%TZ')
应位于select
子句中。DATE_FORMAT(date, '%Y-%m-%dT%TZ')
should be inselect
clause.您应该将 DATE_FORMAT 移动到查询的选择部分,如下所示:
You should move the DATE_FORMAT to the select part of your query like this:
另一种格式化支持任何时区的 DateTime 的解决方案:
它将添加日期的时区信息。
Another solution to format the DateTime supporting any
timezone
:It will add the timezone information of the date.