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()) --星期幾
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章