我遇到了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
答案 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)