全部,
我有一个sql表,该表的字段是
id
name
expireydate
现在我只想要那些在45天或30天内过期的记录。
如何处理sql查询。 我用SQL没有更多的exp。
提前致谢,
答案 0 :(得分:1)
如果您使用的是mysql,请尝试DATEDIFF。
持续45天
select * from `table` where DATEDIFF(now(),expireydate)<=45;
30天
select * from `table` where DATEDIFF(now(),expireydate)<=30;
在oracle -
中,我会使用dateiff而不是SYSDATE
代替now()
。[不确定]
在sql server中,DateDiff完全不同,你必须提供从2个日期中取出差异的单位。
DATEDIFF(datepart,startdate,enddate)
获取当前日期,请尝试以下操作之一:CURRENT_TIMESTAMP
或GETDATE()
或{fn NOW()}
答案 1 :(得分:0)
您可以使用简单的SELECT * FROM yourtable WHERE expireydate < "some formula calculating today+30 or 45 days"
。
简单比较将在那里工作,棘手的部分是写下你要比较的日期的最后一位。这取决于您的环境以及您如何在数据库中存储“expireydate”。
答案 2 :(得分:0)
尝试下面的内容: -
SELECT * FROM MYTABLE WHERE (expireydate in days) < ((CURRENTDATE in days)+ 45)
不要直接执行!根据您的数据库,获取日期的方式将有所不同。请查看您的数据库手册或请准确了解您的数据库。