[英]SQL HELP… CONVERT(int, CONVERT(datetime, FLOOR(CONVERT(float, getdate())))
我在調整SQL語句的這一部分時遇到問題:
HAVING dbo.BOOKINGS.BOOKED = CONVERT(int, CONVERT(datetime,
FLOOR(CONVERT(float, GETDATE()))) + 2)
通常,使用此語句的頁面只列出今天的銷售量,我想將GETDATE()
切換到我聲明的日期。 我嘗試了所有不同的格式,但都沒有
使用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顯式轉換該值。
如果你想要你自己的日期,你可以這樣做而不是getdate(),它給出了當前的系統時間戳。
Cast('2010-11-04 13:28:00.000' as datetime)
怎么樣
declare @myDate as datetime
set @myDate = '11/2/2010'
. . .
HAVING dbo.BOOKINGS.BOOKED = CONVERT(int, CONVERT(datetime,
FLOOR(CONVERT(float, @myDate ))) + 2)
應該這樣做,並且它應該自動對set語句中使用的日期字符串進行類型轉換,或者如果存儲過程中存在日期時間參數,則可以傳入日期時間參數。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.