SQL语句 怎样比较两个日期的大小?
2022-12-14 · 百度认证:北京惠企网络技术有限公司官方账号
关注
展开全部
惯例,在等号左边尽量不要有对字段的运算,所以一般用法有:\x0d\x0a\x0d\x0a1、判断其是否在某个日期区间:\x0d\x0aWhereCheckDateBetween'2013-01-01'And'2013-01-31'\x0d\x0a这个方法也可用于加几天是多少,或减几天是多少:\x0d\x0a把起迄日期参数化,原CheckDate要加的,那就变成@BeginDate加,减也同理~\x0d\x0a\x0d\x0a2、判断其是否大于某天:\x0d\x0aWhereCheckDate>'2013-01-01'或大于等于:WhereCheckDate>='2013-01-01'\x0d\x0a小于某天\x0d\x0aWhereCheckDate<'2013-01-01'或小于等于:WhereCheckDate<='2013-01-01'\x0d\x0a\x0d\x0a3、判断其是否等于某天:\x0d\x0a如果Check字段不带时间,只是年月日,那直接等于就可以了;\x0d\x0aWhereCheckDate='2013-01-01'\x0d\x0a\x0d\x0a如果CheckDate字段是携带时间的就会有差别;这一点,在上述所有方法中都需要注意\x0d\x0aeg:CheckDate实际存储值可能是:2013010108:50:54:000或2013010122:50:54:000\x0d\x0a这时直接用上面的等号是抓不到的,因此或改写成:\x0d\x0aWhereCheckDate>='2013-01-01'AndCheckDate<'2013-01-02'\x0d\x0a当然也可以把'2013-01-01',定义为参数@DateDateTime\x0d\x0aWhereCheckDate>=@DateAndCheckDate<@Date+1\x0d\x0a\x0d\x0a不建议在等号左边使用函数或计算对表字段进行计算。\x0d\x0a\x0d\x0a以上是两个日期的判断,另外有些日期处理函数可以了解一下:\x0d\x0a\x0d\x0aDATEDIFF(datepart,startdate,enddate)\x0d\x0a返回指定的startdate和enddate之间所跨的指定datepart边界的计数(带符号的整数)。\x0d\x0aeg:\x0d\x0aSelectDateDiff(DAY,'20130101','20130105')\x0d\x0a1号到5号相差4天,输出结果为4\x0d\x0a\x0d\x0a常用的datepart有:\x0d\x0adatepart缩写\x0d\x0ayearyy,yyyy年\x0d\x0amonthmm,m月\x0d\x0adaydd,d日\x0d\x0aweekwk,ww周\x0d\x0ahourhh时\x0d\x0aminutemi,n分\x0d\x0asecondss,s秒\x0d\x0a\x0d\x0aDATEADD(datepart,number,date)\x0d\x0a\x0d\x0a将表示日期或时间间隔的数值与日期中指定的日期部分相加后,返回一个新的DT_DBTIMESTAMP值。number参数的值必须为整数,而date参数的取值必须为有效日期。\x0d\x0aeg:\x0d\x0aSelectDATEADD(DAY,1,'20130101')\x0d\x0a1号加1天就是2号;输出结果为‘2013-01-02’\x0d\x0aNumber可以是负数就变成减几天\x0d\x0a\x0d\x0aDATEADD(datepart,number,date)\x0d\x0a\x0d\x0a将表示日期或时间间隔的数值与日期中指定的日期部分相加后,返回一个新的DT_DBTIMESTAMP值。number参数的值必须为整数,而date参数的取值必须为有效日期。\x0d\x0aeg:\x0d\x0aSelectDATEPART(DAY,'20130101')\x0d\x0a返回datepart描述的部分,输出结果为1
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询