SQL语句中怎样比较两个日期的大小?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了SQL语句中怎样比较两个日期的大小?相关的知识,希望对你有一定的参考价值。

惯例,在等号左边尽量不要有对字段的运算,所以一般用法有:

1、判断其是否在某个日期区间:
Where CheckDate Between '2013-01-01' And '2013-01-31'
这个方法也可用于加几天是多少,或减几天是多少:
把起迄日期参数化,原CheckDate要加的,那就变成@BeginDate加,减也同理~

2、判断其是否大于某天:
Where CheckDate >'2013-01-01' 或大于等于:Where CheckDate >='2013-01-01'
小于某天
Where CheckDate <'2013-01-01' 或小于等于:Where CheckDate <='2013-01-01'

3、判断其是否等于某天:
如果Check字段不带时间,只是年月日,那直接等于就可以了;
Where CheckDate ='2013-01-01'

如果CheckDate字段是携带时间的就会有差别;这一点,在上述所有方法中都需要注意
eg:CheckDate 实际存储值可能是: 20130101 08:50:54:000 或 20130101 22:50:54:000
这时直接用上面的等号是抓不到的,因此或改写成:
Where CheckDate >= '2013-01-01' And CheckDate < '2013-01-02'
当然也可以把'2013-01-01',定义为参数@Date DateTime
Where CheckDate >= @Date And CheckDate < @Date+1

不建议在等号左边使用函数或计算对表字段进行计算。

以上是两个日期的判断,另外有些日期处理函数可以了解一下:

DATEDIFF ( datepart , startdate , enddate )
返回指定的 startdate 和 enddate 之间所跨的指定 datepart 边界的计数(带符号的整数)。
eg:
Select DateDiff(DAY,'20130101','20130105')
1号到5号相差4天,输出结果为4

常用的datepart 有:
datepart 缩写
year yy, yyyy 年
month mm, m 月
day dd, d 日
week wk, ww 周
hour hh 时
minute mi, n 分
second ss, s 秒

DATEADD(datepart, number, date)

将表示日期或时间间隔的数值与日期中指定的日期部分相加后,返回一个新的 DT_DBTIMESTAMP 值。number 参数的值必须为整数,而 date 参数的取值必须为有效日期。
eg:
Select DATEADD(DAY,1,'20130101')
1号加1天就是2号;输出结果为 ‘2013-01-02’
Number可以是负数就变成减几天

DATEADD(datepart, number, date)

将表示日期或时间间隔的数值与日期中指定的日期部分相加后,返回一个新的 DT_DBTIMESTAMP 值。number 参数的值必须为整数,而 date 参数的取值必须为有效日期。
eg:
Select DATEPART(DAY,'20130101')
返回datepart描述的部分,输出结果为 1
参考技术A mysql 中 使用: <= date_format(参数,"%Y-%m-%d")
mybatis mapper 文件中 :
>=date_format(参数,"%Y-%m-%d")
<=date_format(参数,"%Y-%m-%d")

在Sql语句中怎样计算出两个日期的差值

怎样实现?如:
(2009-06-23) - (2009-06-17)=?
(日期格式不定)

sql语句中计算两个日期的差值用datediff函数。

工具:sqlserver 2008 R2

步骤:

1、计算2009-06-23与2009-06-17之间的天数。语句如下:

select datediff(d,'2009-06-17','2009-06-23')

2、查询结果:

datediff函数:

语法:DATEDIFF(datepart,startdate,enddate)

startdate 和 enddate 参数是合法的日期表达式。

datepart 参数可以是下列的值:

结构化查询语言(Structured Query Language)简称SQL,结构化查询语言是一种数据库查询和程序设计语言,用于存取数据以及查询、更新和管理关系数据库系统;

sql 语句就是对数据库进行操作的一种语言。

折叠sql语句

更新:update table1 set field1=value1 where 范围

查找:select * from table1 where field1 like '%value1%' (所有包含'value1'这个模式的字符串)

排序:select * from table1 order by field1,field2 [desc]

求和:select sum(field1) as sumvalue from table1

平均:select avg(field1) as avgvalue from table1

最大:select max(field1) as maxvalue from table1

最小:select min(field1) as minvalue from table1[separator]

参考技术A

在Sql语句中怎样计算出两个日期的差值使用datediff函数

一、函数功能:DATEDIFF() 函数返回两个日期之间的间隔时间。

二、语法:DATEDIFF(datepart,startdate,enddate)

startdate 和 enddate 参数是合法的日期表达式。

datepart 参数可以是下列的值:

三、实例演示

获取日期'2008-12-29'与'2008-12-30'之间间隔的天数(参考datepart 参数表格,dd表示获取间隔的天数)

SELECT DATEDIFF(dd,'2008-12-29','2008-12-30') AS DiffDate

结果:

参考技术B

sql语句中计算两个日期的差值用datediff函数。

工具:sqlserver 2008 R2

步骤:

1、计算2009-06-23与2009-06-17之间的天数。语句如下:

select datediff(d,'2009-06-17','2009-06-23')

2、查询结果:

datediff函数:

语法:DATEDIFF(datepart,startdate,enddate)

startdate 和 enddate 参数是合法的日期表达式。

datepart 参数可以是下列的值:

参考技术C DATEDIFF(差直类型,开始时间,结束时间)
差直类型 如果是year返回差几年 day就返回差几天
开始时间,结束时间 是datatime 或者smalldatetime型
参考技术D select Datediff(day,cast('2009-06-17' as datetime),cast('2009-06-23' as datetime))

以上是关于SQL语句中怎样比较两个日期的大小?的主要内容,如果未能解决你的问题,请参考以下文章

在Sql语句中怎样计算出两个日期的差值

在SQL语句中怎样对varchar型别的列进行数值大小的比较

sql语句关于时间与时间戳

SQL插入语句

SQL语句怎样查询一个范围

sql语句中日期时间类型怎么比较