我在调整SQL语句的这一部分时遇到了问题:
HAVING dbo.BOOKINGS.BOOKED = CONVERT(int, CONVERT(datetime,
FLOOR(CONVERT(float, GETDATE()))) + 2)通常,使用此语句的页面只列出今天的销售额,我希望将GETDATE()切换为我声明的日期。我尝试了所有不同的格式,但都不起作用
发布于 2010-11-05 01:30:59
使用DATEADD/DATEDIFF方法将时间部分设置为当前日期的午夜-这是最快的方法,转换为FLOAT可能不可靠:
HAVING BOOKINGS.dbo.BOOKED = CONVERT(INT, DATEADD(dd, DATEDIFF(dd, 0, GETDATE()), 0))+2然后,如果您使用变量(在本例中为@var,在存储过程或函数中),则可以轻松设置您自己的日期:
DECLARE @var DATETIME
SELECT ...
HAVING BOOKINGS.dbo.BOOKED = CONVERT(INT, DATEADD(dd, DATEDIFF(dd, 0, @var), 0))+2这里假设@var是DATETIME数据类型。否则,您将需要使用SQL Server将隐式转换为DATETIME的日期格式,或者使用CAST/CONVERT显式转换值。
发布于 2010-11-05 01:25:14
如果你想给出你自己的日期,你可以这样做,而不是getdate(),它给出了当前系统的时间戳。
Cast('2010-11-04 13:28:00.000' as datetime)发布于 2010-11-05 01:30:56
怎么样
declare @myDate as datetime
set @myDate = '11/2/2010'
. . .
HAVING dbo.BOOKINGS.BOOKED = CONVERT(int, CONVERT(datetime,
FLOOR(CONVERT(float, @myDate ))) + 2)这样就可以了,它应该会自动对set语句中使用的日期字符串执行类型转换,或者,如果这是在存储过程中,您也可以只传递一个datetime参数。
https://stackoverflow.com/questions/4099342
复制相似问题