利用SQL语句如何获得两个日期之间相差的天数

我想用SQL语句得到两个日期(date1、date2)之间相差的天数,返回值为数值型,其中date1为数据库里输入数据时的时间,date2为当前系统时间

用sysdate假设结束日期字段是end_date

添加这个判断条件:

where to_char("end_date",'YYYY') = to_char(sysdate,'YYYY') 判断年相同

and to_char("end_date",'MM') = to_char(sysdate,'MM') 判断月相同

and to_char("end_date",'dd') - to_char(sysdate,'dd') = 15 判断日相同

或者:

where to_char("end_date",'YYYY-MM-DD') - to_char(sysdate,'YYYY-MM-DD')=15

扩展资料:

注意事项

DATEDIFF返回跨两个指定日期的日期和时间边界数。 

语法:DATEDIFF ( datepart , startdate , enddate ) 

参数:datepart

是规定了应在日期的哪一部分计算差额的参数。下表列出了 Microsoft® SQL Server™ 识别的日期部分和缩写。

startdate是返回datetime或smalldatetime值或日期格式字符串的表达式。 因为smalldatetime只精确到分钟,所以当用smalldatetime值时,秒和毫秒总是 0。

如果只指定年份的最后两位数字,则小于或等于"两位数年份截止期"配置选项的值的最后两位数字的数字所在世纪与截止年所在世纪相同。大于该选项的值的最后两位数字的数字所在世纪为截止年所在世纪的前一个世纪。例如,如果 two digit year cutoff 为 2049(默认),则 49 被解释为 2049,2050 被解释为 1950。为避免模糊,请使用四位数的年份。

有关时间值指定的更多信息,请参见时间格式。有关日期指定的更多信息,请参见 datetime 和 smalldatetime。 

enddate是计算的终止日期。enddate 是返回 datetime 或 smalldatetime 值或日期格式字符串的表达式。

返回类型:integer

注释:startdate 是从 enddate 减去。如果 startdate 比 enddate 晚,返回负值。当结果超出整数值范围,DATEDIFF 产生错误。对于毫秒,最大数是 24 天 20 小时 31 分钟零 23.647 秒。对于秒,最大数是 68 年。

温馨提示:内容为网友见解,仅供参考
第1个回答  推荐于2020-12-24
求两个日期(date1、date2)之间相差的天数用datediff函数,返回值为数值型,可以用cast函数或者convert函数

declare @a datetime
set @a ='2013-04-09'
select cast((datediff(day,@a,getdate()))as int)

结果为:7

你的需求sql语句为
select cast((datediff(day,date1,date2 ))as int)

或者可以这样select convert(int,date2)-cast(date1 as int)本回答被网友采纳
第2个回答  推荐于2017-10-03

可以用datediff函数。

创建表及插入数据:

create table test
(begindate datetime,
enddate datetime);

insert into test values ('2015-01-01','2015-07-13')

执行:

select datediff(day,begindate,enddate) from test;

结果:

第3个回答  2013-04-16
用sysdate 假设结束日期字段是 end_date
那么就添加这个判断条件
where to_char("end_date",'YYYY') = to_char(sysdate,'YYYY') 判断年相同
and to_char("end_date",'MM') = to_char(sysdate,'MM') 判断月相同
and to_char("end_date",'dd') - to_char(sysdate,'dd') = 15 判断日相同
当然 不知道这样是否可行
where to_char("end_date",'YYYY-MM-DD') - to_char(sysdate,'YYYY-MM-DD')=15
你都可以试一下 希望能够帮助你
第4个回答  2013-04-16
select Datediff(dd,'[输入的时间]',getdate()) <=====Datediff()函数去看看吧,能对数据库的时间操作的。dd表示的是日期。

利用SQL语句如何获得两个日期之间相差的天数
或者:where to_char("end_date",'YYYY-MM-DD') - to_char(sysdate,'YYYY-MM-DD')=15

利用SQL语句如何获得两个日期之间相差的天数
select TO_DATE(TO_CHAR(sysdate,'YYYYMMDD'),'YYYYMMDD') - TO_DATE(表字段,'YYYYMMDD') from 表名;表名和表字段根据具体情况而定,还有 date1为数据库里输入数据时的时间,date2为当前系统时间 应该是反的,date1应该是当前系统时间,date2是数据库里输入数据时的时间 ...

datedif和year函数区别
例如,你可以通过以下SQL语句来获取两个日期之间的天数差异:SELECT DATEDIFF(date1, date2);这里,`date1` 和 `date2` 需要是日期或日期时间类型。此外,`DATEDIFF` 还支持单位参数,例如“天”、“小时”等,让你能够灵活地计算所需的差异单位。而 `YEAR` 函数则相对简单,它仅需要一个日期或日期...

sql 怎么计算两个时间的天数
sql 怎么计算两个时间的天数 select datediff(part,StartDate,EndDate) part:日期的哪一部分计算差额的引数 StartDate:开始时间 EndDate:截至时间 如:select datediff(dd,'2010-09-20','2010-09-21') 结果:1 即两个日期相差1天; select datediff(mm,'2010-09-20','2010-09-21...

sql语句中可以查处要查询的两个日期之间的天数么?
用datediff函数,第一个参数是截止时间,第二个参数是起始时间 不好意思,刚才的是mysql,刚看了下sql的文档发现有点区别- -,sql的话,用下面的形式:DATEDIFF ( datepart , startdate , enddate )所以你要求2个日期之间间隔的天数,这样写:datediff( dd, '2008\/1\/1', '2009\/1\/2' )这里的...

在Sql语句中怎样计算出两个日期的差值
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 参数是合法的日期表达式...

SQL是计算两个日期相差多少天数的函数?
具体形式:select 1,2,datediff(day,1,2) 天数 from aa 还有一些方法:使用DATEDIFF函数可以求两个日期之间相差的天数。MySQL中的DATEDIFF函数仅需要两个参数 (即要计算相差天数的两个日期),第一个参数应是两个日期中较小的值,以避免出现负值(SQL Server中正好相反)。在SQL Server中,可以指定该...

如何计算两个日期之间的天数
要计算两个日期之间的天数,可以使用 SQL 或 Go 语言。使用 SQL,通过以下查询语句可以计算北京奥运会开幕式日期与指定日期之间的天数:SELECT DATEDIFF("2089-10-01","2008-08-08") AS "天数"在 Go 语言中,可以使用 time 包计算两个日期之间的天数。实现方式如下:首先,需要导入 time 包,然后...

sql中该如何算成俩个时间之间的天数
解决方案:使用两个内联视图求WARD和ALLEN的HIREDATE(聘用日期)。然后使用DAYS 函数从一个HIREDATE中减去另一个HIREDATE:select days(ward_hd) - days(allen_hd)from (select hiredate as ward_hd from emp where ename = 'WARD') x,select hiredate as allen_hd from emp where ename = '...

SQL怎么查询一行数据里两个日期差的天数
要用到日期函数datediff(day,begintime,endtime),还要把月份转化出来判断是否想到,有点麻烦额

相似回答