2012-03-14 87 views
0

我遇到了MySQL format_date问题,不明白为什么。我有以下为我的代码部分:MySQL FORMAT_DATE%d返回'0'

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'

Zeth

+2

奇。如果我运行'SELECT date_format(NOW()+ INTERVAL 3 DAY,'%Y-%m-%d')'它会正确显示。我想知道它是否与你的语言环境有关? – 2012-03-14 19:32:04

+0

你能显示完整的查询吗?这不应该发生。 – 2012-03-14 19:32:55

+0

它在这里也不显示'0'。如果你的目标是比较日期,你也可以在mysql中完成。 – 2012-03-14 19:35:02

回答

1

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

如果你只是想比较日期,你可以在MySQL内部做到这一点,你可能根本不应该使用DATE_FORMAT()。您可以使用它来得到一个日期:

DATE(NOW() + INTERVAL 3 DAY) 

或:

(CURDATE() + INTERVAL 3 DAY) 
+0

我将当前日期与数据库中的字段'YYYY-MM-DD'进行比较,因此需要格式化,除非我错过了某些内容? – Zeth 2012-03-14 19:55:47

+0

列'CHAR'和格式是这样还是'DATE'列? – 2012-03-14 19:57:00

+1

无论哪种情况'column 2012-03-14 19:59:15