一.实际应用场景
新增数据表Medicinal,列(Id,MedicinalName,InvalidTime),Id:药品编号,MedicinalName:药品名,InvalidTime:失效日期
根据失效日期与当前日期相减,得出有效时间天数和药品状态(已经失效,即将失效(距离失效还有一个月),正常(距离失效日期超过一个月))
SELECT a.*, DATEDIFF(DAY, GETDATE(), InvalidTime) AS '间隔天数', CASE WHEN DATEDIFF(DAY, GETDATE(), InvalidTime) <= 0 THEN '失效' WHEN DATEDIFF(DAY, GETDATE(), InvalidTime) > 0 AND DATEDIFF(DAY, GETDATE(), InvalidTime) <= 30 THEN '即将失效' ELSE '正常' END '药品状态' FROM Medicinal a
结果:
二.代码分析(DATEDIFF)
DATEDIFF() 函数返回两个日期之间的时间。startdate 和 enddate 参数是合法的日期表达式。day表示返回的类型,该参数还可以是year,month
DATEDIFF(day, startdate, enddate)
三.拓展(关于日期)
连接:http://www.w3school.com.cn/sql/sql_dates.asp