2014-01-08 79 views
-1

我正在开发一个项目,其中有一个酒店的数据库。有三个表名为room, hotel, booking。我想从所有酒店计算今天的总收入。为此,我有以下查询,但它除了Null之外什么都不输出。SQL Server日期函数不起作用

SELECT 
    sum(price) TODAY_INCOME 
FROM 
    room 
WHERE 
    roomNo IN (SELECT roomNo 
       FROM booking1 
       WHERE datefrom1 <= GETDATE() AND dateTo1 >= GETDATE() 
       AND hotelNo = (SELECT hotelNo FROM hotel 
           WHERE hotelName = 'avari')); 

任何类型的帮助,将不胜感激。以下是链接到我的表。

http://i.stack.imgur.com/2ZqO4.png

+1

请出示样本数据显示,查询*应*返回非NULL值。 –

回答

1

这可能是因为GETDATE()返回datetime,完整的时间戳。所以,如果你做dateTo1 >= GETDATE(),你真的说where dateTo1 >= '01/08/2014 11:44am',例如。 '01/08/2014 11:44 am'大于'1/8/2014'的日期,因为时间部分将默认为午夜。

改变您的查询:

SELECT sum(price) TODAY_INCOME from room 
where roomNo IN(select roomNo from booking1 
WHERE datefrom1 <= CAST(GETDATE() as date) AND dateTo1 >= cast(GETDATE() as date) AND 
hotelNo =(select hotelNo from hotel 
where hotelName = 'avari')); 
+0

使用US格式的日期。他们会变成'2014-01-08 11:44 am'在数据库 – ps2goat

+0

这是有帮助的。感谢人 –