2016-04-05 88 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

当我使用我制作的转换列进行比较时,这正是我所需要的。谢谢! –

相关问题