2011-02-01 90 views
2

我想寫一個SQL查詢以返回從昨天晚上9點到當前時間的結果。據我所知,GETDATE()只會給我今天的結果,而GETDATE()-1會給我昨天的所有,我不想要。sql獲取日期的具體時間

這又如何實現呢?

回答

5
select * from tbl 
where datecol between dateadd(hour,21,DATEDIFF(d,0,getdate()-1)) 
    and getdate() 
+0

爲什麼BETWEEN?不是`datecol> = ...`足夠嗎? – 2011-02-01 19:58:16

+0

@Joe - 它可能是一個包含未來數據的日曆表。未指定 – RichardTheKiwi 2011-02-01 19:59:15

0

嘗試使用此:

DATE_SUB(CURDATE(), INTERVAL 24-9 HOUR); 

這substracts 24-9小時,以當前的日期,這相當於從其減去1天,並添加9小時。

-1

試試這個,這工作完全在Sybase DATABSE

SELECT * FROM表,其中datecol> DATEADD(天,-1,DATEADD(小時,18,(轉換(日期時間,轉換(日期,GETDATE() )))))

說明:(內到外)

  1. 轉換(日期,GETDATE()) - 這將讓今天的日期,只有日期部分,即7/19/2015

  2. convert(datetime,convert(date,getdate())) - 將得到今天的日期,時間爲00:00小時,即7/19/2015 12:00:00 AM

  3. dateadd (小時,21,(convert(datetime,convert(date,getdate()))) - 這將添加小時到以前獲得的結果,即7/19/2015 9:00:00 PM

  4. dateadd (date,-1,dateadd(hour,18,(convert(datetime,convert(date,getdate()))))) - 最後這會減去獲得日期的一天,即7/18/2015 9: 00:00 PM

這裏喲你去...