MySQL FORMAT_DATE%d返回'0'

时间:2012-03-14 19:25:20

标签: mysql date format

我遇到了MySQL format_date的问题,并且不明白为什么。我的代码中包含以下内容:

date_format(NOW() + INTERVAL 3 DAY, '%Y-%m-%d') 

似乎工作得很好,除了不管我选择的日期,%d返回单个零('0')。如果我将%d更改为%e我可以得到正确的日期,但我用它来比较日期,所以我需要10以下数字的前导零。这是一个数据库设置,还是我错过了一些明显的东西?< / p>

提前致谢。

更新:我觉得它必须是db中的东西,因为当我简化查询时:

$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'

Zeth

2 个答案:

答案 0 :(得分:4)

我今天遇到了同样的问题,根据您的表名“content_field_date”我假设正在使用Drupal。答案可以在这里找到:

Some sql queries work in terminal but not with db_query() function in Drupal 6 Why..?

在这里: http://drupal.org/node/100846

因为百分号需要转义,所以正确的查询应该是:

$q = "SELECT date_format(NOW() + INTERVAL 3 DAY, '%%Y-%%m-%%d') as 'today' from content_field_date LIMIT 1";

答案 1 :(得分:1)

你描述的不应该发生。您要么发现了MySQL错误,要么发现了错误。

如果您只想比较日期,可以在MySQL内部进行,您可能根本不应该使用DATE_FORMAT()。您可以使用它来获取日期:

DATE(NOW() + INTERVAL 3 DAY)

或:

(CURDATE() + INTERVAL 3 DAY)