2016-04-05 116 views
-1

我目前正在嘗試將查詢寫入SSIS包的一部分,部分要求是查詢將返回所有包含時間戳(目前爲yyyy-mm-dd hh:mm:ss:mmm格式)發生於1:01 AM 2天前至1天前1天前。我可以寫這個日期,但我堅持如何納入小時範圍。目前查詢:查詢從兩天前的1:01 AM到昨天凌晨1點的所有記錄

SELECT * 
FROM 
(SELECT dateadd(S, logintime, '1970-01-01') as "conversion" 
,DATEPART(hh, dateadd(HOUR, logintime, '1970-01-01')) as "HourCol" 
,DATEPART(hh, dateadd(MINUTE, logintime, '1970-01-01')) as "MinuteCol" 
, * FROM my.logtable 
WHERE row_date between dateadd(day, -3, getdate()) and DATEADD(day, -1, GETDATE())) as subselect 
where conversion between --and from here I'm lost. 
order by conversion 
+0

向我們展示您試圖獲得日期?然後我們幫你包括幾個小時。 \t請閱讀[**如何提問**](http://stackoverflow.com/help/how-to-ask) \t \t這裏是[** START **]( http://spaghettidba.com/2015/04/24/how-to-post-at-sql-question-on-a-public-forum/)瞭解如何提高您的問題質量並獲得更好的答案。 –

+0

請用您正在使用的數據庫(推測爲SQL Server)標記您的問題。並澄清問題列是否(正確)存儲爲日期/時間或(不正確)存儲爲字符串。 –

+0

編輯,因爲我忘了粘貼在我目前的查詢。 –

回答

1
SELECT getdate() today, 
     CAST(getdate() as DATE) today_0000,  
     DATEADD(day, -1, CAST(getdate() as DATE)) yesterday0000, 
     DATEADD(day, -2, CAST(getdate() as DATE)) daybeforyesterday0000, 
     DATEADD(mi, 60, CAST(DATEADD(day, -1, CAST(getdate() as DATE)) as datetime)) yesterday0100, 
     DATEADD(mi, 61, CAST(DATEADD(day, -2, CAST(getdate() as DATE)) as datetime)) daybeforyesterday0101 

最後兩位給你你正在尋找的範圍。只要你與另一個日期時間比較應該工作。

enter image description here

+0

當我使用我製作的轉換列進行比較時,這正是我所需要的。謝謝! –

相關問題