【发布时间】:2012-03-14 19:25:20
【问题描述】:
我在使用 MySQL format_date 时遇到问题,不明白为什么。我的代码中有以下内容:
date_format(NOW() + INTERVAL 3 DAY, '%Y-%m-%d')
这似乎工作正常,除了无论我选择什么日期,%d 都以单个零 ('0') 的形式返回。如果我将 %d 更改为 %e ,我可以获得正确的日期,但我使用它来比较日期,所以对于 10 以下的数字,我需要前导零。这是数据库设置,还是我遗漏了一些明显的东西?
提前致谢。
更新:我觉得它必须在数据库中,因为当我将查询简化为:
$q = "SELECT date_format(NOW() + INTERVAL 3 DAY, '%Y-%m-%d') as 'today' from content_field_date LIMIT 1";
“今天”打印为“2012-03-0”
同时,这个:
$q = "SELECT date_format(NOW() + INTERVAL 3 DAY, '%Y-%m-%e') as 'today' from content_field_date LIMIT 1";
正确返回“2012-03-17”
泽思
【问题讨论】:
-
奇怪。如果我运行
SELECT date_format(NOW() + INTERVAL 3 DAY, '%Y-%m-%d'),它会正确显示。我想知道这是否与您的语言环境有关? -
你能显示完整的查询吗?这不应该发生。
-
这里也没有显示
0。如果您的目标是比较日期,您也可以在 mysql 中进行。 -
奇怪。如果您输入其他数字,例如
+ INTERVAL 17 DAY,是否也会发生这种情况? -
(与错误无关):
as 'today'应该是as today或as `today`。