sql時間間隔
① sql語句中,按時間段間隔查詢怎麼寫
select * from 表 where 日期欄位>='開始日期' and 日期欄位<='截止日期'
and convert(char(8),日期欄位,108)>='開始時間' and convert(char(8),日期欄位,108)<='截止時間'
例如:
select * from tb1 where dDate>='2010-11-05' and dDate<='2010-11-15'
and convert(char(8),dDate,108)>='22:30:00' and convert(char(8),dDate,108)<='23:00:00'
② SQL查詢中如何設置時間的間隔
可以在應用程序的代碼里實現這個,沒有必要在資料庫里做
③ 一個設置SQL日期時間間隔的問題
SqlServer 常用日期函數:
getdate(),
dateadd(year,1,getdate()),
dateadd(mm,1,getdate()),
dateadd(day,1,getdate()),
dateadd(hh,1,getdate()),
dateadd(mi,1,getdate()),
dateadd(ss,1,getdate()),
convert(varchar,getdate(),121),
convert(datetime,'2001-01-01 00:00:00.000',121)
④ SQL 日期間隔
求指定日期的日期間隔?
datediff(日期部分,開始日期,結束日期)
⑤ Sql時間間隔
用sql代理定義一個作業,每小時執行一次
⑥ SQL語句時間間隔怎麼查詢(只取日期)
selectto_date(to_char(z,'yyyy-mm-dd'),'yyyy-mm-dd')-to_date(to_char(w,'yyyy-mm-dd'),'yyyy-mm-dd')+1from表名
試試這樣
下邊這個貌似更簡單寫,ceil是個向上取整的函數
selectceil(z-w)+1
from表名
⑦ SQL 時間間隔 問題
你這個是一個遞歸結余的計算問題哦!
可以參考這個裡面的寫法
/*
detail表記帳流水表
==========
欄位:
qt_srMoney(money)收入
qt_zcMoney(money)支出
qt_date(datetime)操作日期
qt_dkfs(nvarchar)打款方式
------------------
需獲取一個帶結余的數據信息
==========
根據期初表中的日期和金額,查詢出記帳表中的結余。
帳面結余=期初金額+收入-支出
實驗環境:sqlserver2008R2
*/
createtabledetail(qt_srMoneymoney,
qt_zcMoneymoney,
qt_datedatetime,
qt_dkfsnvarchar(100))
insertintodetailvalues(100,0,'2018-1-210:00:00','other')
insertintodetailvalues(0,10,'2018-2-210:00:00','other')
insertintodetailvalues(0,20,'2018-3-210:00:00','other')
insertintodetailvalues(30,0,'2018-4-210:00:00','other')
insertintodetailvalues(10,60,'2018-5-210:00:00','other')
go
declare@datestartdatetime---開始計算日期
set@datestart='2018-2-1'
declare@qcomneymoney--期初
set@qcomney=100
selectt1.qt_date,t1.qt_dkfs,t1.qt_srMoney,t1.qt_zcMoney,sum(t2.qt_srMoney-t2.qt_zcMoney)+@qcomney
fromdetailt1,detailt2
wheret1.qt_date>=t2.qt_date
andt1.qt_date>=@datestart
groupbyt1.qt_date,t1.qt_dkfs,t1.qt_srMoney,t1.qt_zcMoney
orderbyt1.qt_date;
go
---避免日期出現兩條導致結余數據計算異常-----
declare@datestartdatetime---開始計算日期
set@datestart='2018-2-1'
declare@qcomneymoney--期初
set@qcomney=100
withcteNameas
(
selectqt_srMoney,qt_zcMoney,qt_date,qt_dkfs,
row_number()over(orderbyqt_date)askeyIDfromdetailwhereqt_date>=@datestart
)selectt1.keyId,t1.qt_date,t1.qt_dkfs,t1.qt_srMoney,t1.qt_zcMoney,sum(t2.qt_srMoney-t2.qt_zcMoney)+@qcomney
fromcteNamet1,cteNamet2
wheret1.keyId>=t2.keyId
groupbyt1.qt_date,t1.qt_dkfs,t1.qt_srMoney,t1.qt_zcMoney,t1.keyId
orderbyt1.keyId;
go
truncatetabledetail
droptabledetail
⑧ sql 中取兩個時間段的間隔怎麼寫
SELECT DATEDIFF(Hour, '8:30','14:23')
⑨ 關於SQL兩個時間計算出間隔時間的問題。
直接相減是秒數,然後/60/60/24取整就是天,然後小數部分乘24再取整就是小時,然後小數部分乘60再取整就是分,然後小數部分乘60就是秒了
假設本題相減後:
to_date('2013-08-24 16:05:05','yyyy-mm-dd hh24:mi:ss')
-to_date('20132013-08-20 16:40:23','yyyy-mm-dd hh24:mi:ss'))
為X秒,則:
select to_char(floor(X/60/60/24))||'天'||to_char(floor((X/60/60/24-floor(X/60/60/24))*24))||'小時'||..........
⑩ 怎麼用SQL語句計算時間間隔
DATEDIFF
返回跨兩個指定日期的日期和時間邊界數。
語法
DATEDIFF ( datepart ,startdate ,enddate )
參數
datepart
是規定了應在日期的哪一部分計算差額的參數。下表列出了 Microsoft® SQL Server™ 識別的日期部分和縮寫。
日期部分縮寫
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
startdate
是計算的開始日期。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 年。
計算跨分鍾、秒和毫秒這些邊界的方法,使得 DATEDIFF 給出的結果在全部數據類型中是一致的。結果是帶正負號的整數值,其等於跨第一個和第二個日期間的 datepart 邊界數。例如,在 1 月 4 日(星期日)和 1 月 11 日(星期日)之間的星期數是 1。
示例
此示例確定在 pubs 資料庫中標題發布日期和當前日期間的天數。
USE pubs
GO
SELECT DATEDIFF(day, pubdate, getdate()) AS no_of_days
FROM titles
GO