SQL Server日期功能不起作用

时间:2014-01-08 17:38:01

标签: sql sql-server

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

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 个答案:

答案 0 :(得分:1)

这可能是因为GetDate()返回一个日期时间,并带有时间戳。因此,如果您执行dateTo1 >= GETDATE(),那么您实际上是在说where dateTo1 >= '01/08/2014 11:44am'。 '01 / 08/2014上午11:44'大于'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'));