我试图使用这个sql获取过去30天的一堆mysql行:
SELECT * FROM `articles` WHERE date >= DATE(NOW() - INTERVAL 30 DAY) ORDER BY `views` DESC
我显然做错了,因为这会返回去年的行。
我在gmt时间戳中的日期字段。
答案 0 :(得分:3)
如果您的日期字段不是DATETIME
,TIMESTAMP
或DATE
字段类型(因为我认为您在“格林尼治标准时间戳”中显示“ - 我怀疑您”重新存储整数本身),你不可能做那样的比较。您还需要将30天前的日期转换为时间戳。
WHERE date >= UNIX_TIMESTAMP(DATE(NOW() - INTERVAL 30 DAY))
答案 1 :(得分:0)
尝试:
SELECT * FROM `articles` WHERE date >= CURDATE() - INTERVAL 30 DAY
ORDER BY `views` DESC
答案 2 :(得分:0)
试试这个:
SELECT *
FROM `articles`
WHERE date >= DATE_SUB(NOW(),INTERVAL 30 DAY)
ORDER BY `views` DESC