我正在尝试从今天插入的表中提取结果。每个插入都标有时间戳。
如果我进行如下查询:
SELECT *
FROM table
WHERE added > DATE_SUB(NOW(), INTERVAL 1 DAY)
似乎我得到的东西确实落在今天的日期,但也是24小时前的东西。也许我正在看东西。
我不想看到24小时前的东西......
答案 0 :(得分:4)
您可以extract the date part时间戳字段并将其与the current date进行比较。
SELECT x,y,z FROM t WHERE Date(added)=Curdate()
答案 1 :(得分:2)
你可以使用mysql将日期与午夜的日期时间值进行比较的技巧:
SELECT * FROM table WHERE added >= CURRENT_DATE
这样做的好处是它可以使用索引。
答案 2 :(得分:2)
“间隔1天”并不表示“同一日历日”,它表示“24小时内”。在许多情况下这很有用。比如,您可能想说,向我显示过去24小时内对我的帖子做出的所有回复。如果我在早上到达工作岗位时遇到这样的疑问,它会告诉我自昨天早上我提出的所有回复,以及我到达之前今天早上的回复。这可能是我想知道的。
显然它在你的情况下没用,所以......用别的东西!就像其他海报所说的那样。
答案 3 :(得分:2)
我倾向于使用TO_DAYS()将时间转换为日期数字,例如
SELECT *
FROM table
WHERE TO_DAYS(added)=TO_DAYS(NOW())
答案 4 :(得分:0)
SELECT *
FROM table
WHERE DATE(added) = DATE(NOW())
DATE(添加)会从您的日期中删除小时,分钟和秒,如果它们在那里。
NOW()返回今天的日期和时间。
DATE(NOW())返回今天的日期。
因此,如果执行WHERE DATE(添加)= DATE(NOW()),则仅会获得日期为今天的日期的结果。