SQL 计算datetime的差值,查询最近几秒有变动的数据

数据库操作中,如果要查询最近五秒更新的数据有哪些,可以现在数据库里加一列用来存插入数据时的时间,相当于Insert、update等操作的时候,多加一个系统时间就行了
然后select语句就可以通过datediff()这个函数来求你存的时间和select执行的时候的系统时间的差值,单位可以是秒、分、时、天、等等。
例如我要查A表里面最近五秒插入了哪些数据:
A表里面有Time这一列,用来存insert、update等操作的时候的系统时间

select * from A where DateDiff(ss,Time,GETDATE())<5

DateDiff这个函数一共三个参数,第一个是返回的数据单位,可以是秒,分,时等等,第二个是StartTime,第三个是EndTime,计算的时候是EndTime-StartTime,返回一个int,如果计算2016年和1900年相差多少秒,那就溢出了,对于秒,最大数是 68 年

我们再看下SQL有关的时间计算的用法
内容转载自http://blog.csdn.net/pengpegv5yaya/article/details/8024677
上面说到的第一个参数有以下缩写
日期部分 缩写
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

SQLServer时间日期函数详解,SQLServer,时间日期,
1.      当前系统日期、时间
        select getdate()
2. dateadd      在向指定日期加上一段时间的基础上,返回新的 datetime 值
       例如:向日期加上2select dateadd(day,2,'2004-10-15')      --返回:2004-10-17 00:00:00.000
3. datediff 返回跨两个指定日期的日期和时间边界数。
       select datediff(day,'2004-09-01','2004-09-18')       --返回:17
       select datediff(day,'2004-09-18','2004-09-01')       --返回:-17
4. datepart 返回代表指定日期的指定日期部分的整数。
      SELECT DATEPART(month, '2004-10-15')      --返回 10
5. datename 返回代表指定日期的指定日期部分的字符串
       SELECT datename(weekday, '2004-10-15')      --返回:星期五
6. day(), month(),year() --可以与datepart对照一下
select 当前日期=convert(varchar(10),getdate(),120)
,当前时间=convert(varchar(8),getdate(),114)
select datename(dw,'2004-10-15')
select 本年第多少周=datename(week,'2004-10-15')
          ,今天是周几=datename(weekday,'2004-10-15')
函数 参数/功能
GetDate( )   返回系统目前的日期与时间
DateDiff (interval,date1,date2) 以interval 指定的方式,返回date2 与date1两个日期之间的差值
date2-date1
DateAdd (interval,number,date) 以interval指定的方式,加上number之后的日期
DatePart (interval,date) 返回日期date中,interval指定部分所对应的整数值
DateName (interval,date) 返回日期date中,interval指定部分所对应的字符串名称

SQL有关的一些函数,做查询条件的时候不用写select,直接用函数

--获取当前日期(如:yyyymmdd hh:MM:ss)
select GETDATE()

--获取当前日期(如:yyyy-mm-dd)
Select Datename(year,GetDate())+'-'+Datename(month,GetDate())+'-'+Datename(day,GetDate())

--获取当前日期(如:yyyy/mm/dd)
select DATENAME(YEAR,GETDATE())+'/'+DATENAME(MONTH,GETDATE())+'/'+DATENAME(DAY,GETDATE())

--获取几种日期
select DATENAME(YEAR,GETDATE()) --年份(YYYY)
select DATENAME(YY,GETDATE())

select DATENAME(MM,GETDATE()) --月份
select DATENAME(DD,GETDATE()) --日期
select dateName(hh,getdate()) --获取小时
select DATENAME(MI,GETDATE()) --获取分钟
select DATENAME(SECOND,GETDATE()) --获取秒
select DATENAME(WEEK,GETDATE()) --获取当前星期(周)是这一年中的第几个星期(周)
select DATENAME(WEEKDAY,GETDATE()) --星期几

你可能感兴趣的:(SQL)