在MySQL语句中有一种方法来排序记录(通过日期戳)>= NOW() -1所以所有的记录从今天前一天到未来被选中?
当前回答
请注意,结果可能与您的预期略有不同。
NOW()返回一个DATETIME。
并且INTERVAL的工作方式与名称相同,例如INTERVAL 1 DAY = 24小时。
因此,如果您的脚本被克隆为在03:00运行,它将错过“最古老”一天的前三个小时记录。
要获得一整天,使用CURDATE() -间隔1天。无论脚本何时运行,这都将返回到前一天的开始。
其他回答
请注意,结果可能与您的预期略有不同。
NOW()返回一个DATETIME。
并且INTERVAL的工作方式与名称相同,例如INTERVAL 1 DAY = 24小时。
因此,如果您的脚本被克隆为在03:00运行,它将错过“最古老”一天的前三个小时记录。
要获得一整天,使用CURDATE() -间隔1天。无论脚本何时运行,这都将返回到前一天的开始。
你当然可以:
SELECT * FROM table
WHERE DateStamp > DATE_ADD(NOW(), INTERVAL -1 DAY)
使用DATE_ADD或DATE_SUB没有看到任何正确的答案:
从现在减去1天()
...WHERE DATE_FIELD >= DATE_SUB(NOW(), INTERVAL 1 DAY)
从现在开始增加1天()
...WHERE DATE_FIELD >= DATE_ADD(NOW(), INTERVAL 1 DAY)
你差不多到了:现在()-间隔1天
当搜索字段是时间戳,你想找到从昨天0小时到今天0小时的记录时,使用构造
MY_DATE_TIME_FIELD between makedate(year(now()), date_format(now(),'%j')-1) and makedate(year(now()), date_format(now(),'%j'))
而不是
now() - interval 1 day
推荐文章
- MySQL删除表中的所有行,并将ID重置为零
- 在准备语句中使用“like”通配符
- MySQL中的表名是否区分大小写?
- 库未加载:libmysqlclient.16。在OS X 10.6上使用mysql2 gem运行'rails server'时出现dylib错误
- 如何知道MySQL表最近一次更新?
- 在MySQL中的一个查询中更新多个具有不同值的行
- 如果表存在则删除表并创建它,如果不存在则创建它
- MySQL OR与IN性能
- 哪个更快/最好?SELECT *或SELECT columnn1, colum2, column3等
- 将值从同一表中的一列复制到另一列
- 删除id与其他表不匹配的sql行
- MySQL CPU使用率高
- INT和VARCHAR主键之间有真正的性能差异吗?
- 拒绝访问;您需要(至少一个)SUPER特权来执行此操作
- 从存储引擎得到错误28