FlareDream-KarlChen

DATEDIFF函数功能时返回两个日期之间的间隔。
语法
DATEDIFF ( datepart , startdate , enddate )

参数
datepart 是指定所跨边界类型的 startdate 和 enddate 的一部分。
year yy, yyyy 年
quarter qq, q 季
month mm, m 月
dayofyear dy, y
day dd, d 日
week wk, ww 周
hour hh 小时
minute mi, n
second ss, s 秒
millisecond ms
microsecond mcs
nanosecond ns

startdate 是开始时间,即要减去的时间
enddate 是结束时间,即被减时间
返回值(enddate-startdate)类型为int

一些简单的测试
select datediff(d,\'2007-05-06 10:00:00\',\'2007-05-07 10:00:00\') 返回值1,差距一天
select datediff(d,\'2007-05-06 23:59:59\',\'2007-05-07 00:00:00\') 返回值1,因为指定的datepart为天数,所以就算差一秒也相差了一天
select datediff(s,\'2007-05-06 23:59:59\',\'2007-05-07 00:00:00\') 那么这样就是反回的一秒的时间差了。
select datediff(yy,\'2007-05-06 10:00:00\',\'1000-05-07 10:00:00\') 返回值-1007,原来也可以为负数,同样表示相差1007年
select datediff(s,\'2007-05-06 10:00:00\',\'1000-05-07 10:00:00\') 这样返回的描述超过了int值类型的界限,所以会溢出报错。

如果是这样呢select datediff(d,\'2013-05-06\',\'2013-05-07\') 返回值1
再换一个,看看小时select datediff(hh,\'2013-05-06\',\'2013-05-07\') 返回值24 这只能说明相差了24小时,还不能确认时间是不是被默认为0了,接着再试试
select datediff(hh,\'2013-05-06\',\'2013-05-06 01:00:00\') 返回值1,足矣说明,没有输入完整的部分被默认成0了

看看一些简单的运用
1、最直接的使用方法,指定常量
select datediff(d,\'2007-05-06 10:00:00\',\'2007-05-07 10:00:00\') 返回值1
2、给startdate 和enddate 指定用户定义变量
DECLARE @startdate datetime2 = \'2013-05-06 01:00:00\';
DECLARE @enddate datetime2 = \'2013-05-07 01:00:00\';
SELECT DATEDIFF(day, @startdate, @enddate);返回值1
3、在数据库中为startdate 和enddate 指定某个表的两个特定的列
我的数据库文件中正好有一张表TransferMove有两个表示时间的列FinishDay和ApplyDay,我们就来查一查这两个时间的差
ID等于15这一行中FinishDay的值为2014-03-04 15:19:08,ApplyDay的值为2014-04-01 15:19:16
SELECT DATEDIFF(day,FinishDay,ApplyDay) AS \'Duration\' FROM TransferMove where ID =15;返回值28
4、给startdate 和enddate 指定查询函数
还是上面那张表
SELECT DATEDIFF(day,(select FinishDay from TransferMove where ID =17),ApplyDay) AS \'Duration\' FROM TransferMove where ID =15 返回值-4
在ID等于17这一行的FinishDay的值为2014-04-05 10:47:04,ID等于15这一行的ApplyDay为2014-04-01 15:19:16 和预想中的一样
还有其他更复杂的用法,待到深入研究之后再记录下来,http://msdn.microsoft.com/zh-cn/library/ms189794.aspx

分类:

技术点:

相关文章:

  • 2021-08-08
  • 2021-08-08
  • 2021-09-01
  • 2021-08-08
  • 2021-08-08
  • 2021-08-08
  • 2021-08-08
  • 2021-08-08
猜你喜欢
  • 2021-08-08
  • 2021-08-08
  • 2021-08-08
  • 2021-08-08
  • 2021-08-08
  • 2021-09-07
  • 2021-08-08
相关资源
相似解决方案