我正在尝试从我的数据库中选择最近7天
到目前为止,我有以下内容:
SELECT timestamp, COUNT(is_complete)
FROM module_activity
WHERE user_id = 30
AND timestamp BETWEEN NOW()
AND DATE_ADD(NOW(), INTERVAL -7 DAY)
GROUP BY timestamp ORDER BY timestamp ASC
然而,这没有给我任何结果。
我的表格如下:
# id, user_id, module_id, is_complete, timestamp
'1', '30', '5', '1', '2014-08-31 00:00:00'
'2', '30', '6', '1', '2014-09-01 00:00:00'
'3', '30', '7', '1', '2014-09-02 00:00:00'
'4', '30', '8', '1', '2014-09-03 00:00:00'
'5', '30', '9', '1', '2014-09-04 00:00:00'
'6', '30', '10', '1', '2014-09-05 00:00:00'
谁能告诉我我做错了什么?
答案 0 :(得分:1)
来自之间声明的MSSQL文档:
test_expression BETWEEN begin_expression AND end_expression
第一个值(begin_expression)应该是较低的值,第二个值(end_expression)应该是较高的值。例如。 col BETWEEN 1 AND 3
你的陈述的下限和上限是错误的,例如你有col BETWEEN 3 AND 1
。这与写WHERE col >= 3 AND col <= 1
一样,这永远不会是真的,这就是为什么你看不到任何行。
您需要交换较低值(即现在 - 7天)和较高值(即现在)的顺序
timestamp BETWEEN DATE_ADD(NOW(), INTERVAL -7 DAY) AND NOW()