2013-12-16 133 views
0

我期待的操作类似于Simple DateTime sql query,但有所不同:我想指定今日(7.00 am)的时间。如何在特定日期获取特定时间SQL查询

我要计算当时符合条件的记录数:

SELECT COUNT(SEQNO)  
FROM TABLE  
WHERE [CRITERIA]  
and [datetimecolumn] between (datetime=[today's date]at 7.00am) 
and (datetime=[today's date]at 10.00am) 

我可以单独约会做到这一点,但时间有点有我困惑。

+1

答案取决于你的数据库引擎,你没有指定的东西。 –

+0

对不起,SQL2008 R2,通过HTML查询使用webmatrix – Bevan

回答

1

试试这个

Declare @i date=getdate() 
Declare @j varchar(10)='07:00' 
Declare @k varchar(10)= '10:00:00' 

select COALESCE(COUNT(DISTINCT SOH.SEQNO),0) from dbo.SALESORD_HDR SOH 
inner join SALESORDHIST SOHIS on SOH.SEQNO = SOHIS.HEADER_SOURCE_SEQ 
where SOHIS.HISTDATETIME between (DATEADD(day, DATEDIFF(day, 0, @i), @j) 
and DATEADD(day, DATEDIFF(day, 0, @i), @k)) 
and SOHIS.EVENT_TYPE = 'I' 
+0

Hmmm.Entire查询:'选择COALESCE(COUNT(DISTINCT SOH.SEQNO),0) 从dbo.SALESORD_HDR SOH内部联接SALESORDHIST SOHIS上SOH.SEQNO = SOHIS.HEADER_SOURCE_SEQ 其中之间SOHIS.HISTDATETIME(声明@i日期= getdate()声明@j varchar(10)='07:00'选择DATEADD(day,DATEDIFF(day,0,@i),@j))和(datetime = date(“Y/m/d”)。 '10:00:00') 和SOHIS.EVENT_TYPE ='I'',它在声明附近返回错误。 – Bevan

+0

我重新安排了这一点,它工作正常。感谢大家! @Eric T:我的系统不喜欢'curdate'或'concat'--尽管我明白你的建议。原来这个'Declare'技巧是关键。 – Bevan

+0

太棒了,很高兴你找到了方法:) –

1

不知道这是否会帮助你,因为我假设早上7点和上午10点将保持不变。

============================================

之间语法应该是这样的

mysql> SELECT * FROM employee_tbl 
    -> WHERE daily_typing_pages BETWEEN 170 AND 300; 

Credited to this site

所以,你的代码应该是:(请提供该datetimecolumn括号)

and ([datetimecolumn] between CONCAT(CURDATE(), " 07:00:00") 
and CONCAT(CURDATE() , " 10:00:00") 
+0

这看起来很有希望,但它倒过来说'不正确的语法附近“=”'和“不正确的列名'datetime'” – Bevan

+0

也许我在我的操作系统混淆。我在哪里写了'datetime =',我不确定这里放的是什么正确的东西。 – Bevan

+1

嗨请阅读上面编辑的答案,并回复它是否仍然返回语法错误。 –

相关问题