MySQL dateformat%c不返回结果?

时间:2016-04-01 02:07:49

标签: php mysql sql date-format

为什么MySQL dateformat函数不能在查询中获取一个月的行?

SELECT p.*  
FROM article AS p
WHERE p.parent_id = '6' 
AND DATE_FORMAT(p.backdated_on, '%Y %c') = '2015 8'  
GROUP BY p.article_id  
ORDER BY p.backdated_on DESC  
LIMIT 0, 6 

我有backdated_on 2015-11-08 19:10:04

的一行

任何想法为什么以及如何解决这个问题?

2 个答案:

答案 0 :(得分:1)

这个月是' 2015 11':

mysql> select DATE_FORMAT('2015-11-08 19:10:04', '%Y %c');
+---------------------------------------------+
| DATE_FORMAT('2015-11-08 19:10:04', '%Y %c') |
+---------------------------------------------+
| 2015 11                                     |
+---------------------------------------------+
1 row in set (0.00 sec)

'2015 8'匹配日期2015-08-dd ...

答案 1 :(得分:1)

如果日期为2015-11-08 19:10:04,则相应的逻辑为:

DATE_FORMAT(p.backdated_on, '%Y %c') = '2015 11'  

但是,使用字符串函数比较日期是一个坏习惯。代替:

(p.backdated_on >= '2015-11-01' and p.backdated_on < '2015-12-01')