簡體   English   中英

SQL HELP ... CONVERT(int,CONVERT(datetime,FLOOR(CONVERT(float,getdate())))

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM