mysql - SQL 选择过去 45 天的所有数据
问题描述
我有带有日期字段的“警报”表 - targetDate。
我想选择过去 45 天的所有数据。
我尝试了下面的代码,但它没有返回任何结果......
SELECT userID, refID, `targetDate`
FROM alerts
WHERE type = 'travelSoon'
AND DATEDIFF( CURDATE( ) , targetDate ) > 45
桌子
id userID type refID createDate targetDate lastSendDate sent valid
1 26 travelSoon NO 2018-05-02 13:54:25 0000-00-00 2018-05-02 00:00:00 0 1
2 26 travelSoon NO 2018-05-02 13:55:50 2018-06-01 0000-00-00 00:00:00 0 1
3 26 travelSoon DK 2018-05-02 13:56:12 2018-12-01 0000-00-00 00:00:00 0 1
4 26 travelSoon 2018-05-02 13:59:50 0000-00-00 0000-00-00 00:00:00 0 1
5 26 travelSoon 2018-05-02 14:00:09 2018-08-01 0000-00-00 00:00:00 0 1
6 26 travelSoon DK 2018-05-02 14:00:48 2018-08-01 0000-00-00 00:00:00 0 1
7 26 travelSoon 2018-05-02 16:45:18 2018-05-01 0000-00-00 00:00:00 0 1
8 26 travelSoon RO 2018-05-02 16:45:45 2018-04-01 0000-00-00 00:00:00 0 1
解决方案
使用DATEDIFF()
是个坏主意。它阻止了使用索引的能力,并且有一个替代方案不...
SELECT *
FROM alerts
WHERE type = 'travelSoon'
AND targetDate >= DATEADD(DAY, -45, GETDATE()) -- SQL Server
AND targetDate >= CURDATE() - INTERVAL 45 DAY -- MySQL
推荐阅读
- c# - AspCorenet SignalR 客户端无法连接到 LocalHost
- android - 如何判断密钥是否支持硬件?
- python - 使用字符串中的逻辑表达式过滤 QTableWidget
- c - 我尝试使用 lua_sethook 通过协程在 Lua Api 中实现多线程
- css - CSS + 关键帧:如何改变动画速度?
- okhttp3 - java.io.InterruptedIOException:使用okhttp3删除时中断
- python-3.x - 填充列内的间隙并按数字拆分列
- javascript - 反应构建不执行 index.htm 中的脚本
- c# - 闪烁编辑器多语法突出显示
- php - 从文本框中拆分逗号分隔的输入并将其转换为数组