如何在SQL中实现三天后数据查询?所写SQL语句是否正确?
你的SQL条件分析与优化建议
原条件逻辑是正确的,能得到符合需求的结果
- 原语句的核心逻辑是:把
dInsertedDate加3天后转成日期类型,和今天的日期做比较,只要前者小于等于今天,就说明该员工的数据接收时间已经过了三天(包括第三天当天),完全匹配你“查询数据接收三天后的所有员工详情”的需求。 - 不过这里有个可以简化的点:
convert(date, ..., 105)里的样式参数105是多余的——转成date类型时,SQL Server会自动忽略格式差异正确解析,所以可以简化成:select * from tbl_Emp where convert(date, dInsertedDate + 3) <= convert(date, getdate())
- 原语句的核心逻辑是:把
更直观的等价写法
你也可以把条件调整为直接比较原始日期,可读性更强,效果和原语句完全一致:select * from tbl_Emp where dInsertedDate <= dateadd(day, -3, convert(date, getdate()))这个写法的意思是:员工数据接收日期早于或等于今天往前推3天的日期,逻辑更直白,也方便后续维护。
内容的提问来源于stack exchange,提问作者Muriel Mi
相关产品推荐
相关产品推荐

