2010-11-04 84 views
1

我有一個問題我調整SQL語句的這一部分:SQL幫助... CONVERT(INT,CONVERT(日期時間,FLOOR(CONVERT(浮動,GETDATE())))

HAVING dbo.BOOKINGS.BOOKED = CONVERT(int, CONVERT(datetime, 
                FLOOR(CONVERT(float, GETDATE()))) + 2) 

通常情況下,如果你想讓你給自己的日期,那麼使用這個語句的頁面只是列出今天的銷售量,我想將GETDATE()切換到我聲明的日期,我嘗試了所有不同的格式,並且沒有任何工作

+4

你能解釋一下你想要做什麼嗎?這看起來過於複雜。 – JNK 2010-11-04 17:23:40

+0

你還使用了哪些RDBMS(SQL Server,Oracle,MySQL等)? – JNK 2010-11-04 17:29:41

+0

是的,我有一個ASP頁面,顯示我今天的公司總銷售額並建立一個表格。在數據庫中,日期存儲爲39734,等於13Oct08。我需要一種方法將變量/參數轉換爲39734格式。 – MyHeadHurts 2010-11-04 17:30:13

回答

2

使用時間部分設置爲當前日期的午夜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顯式轉換該值。

+0

非常感謝! – MyHeadHurts 2010-11-04 17:40:25

+0

這個工程很好,當我輸入日期我想顯示在查詢中,但你可以幫助宣佈@var我真的很感激它。 – MyHeadHurts 2010-11-04 17:52:08

+0

@NEWprogrammer:我增加了一些細節 - [此鏈接提供了更多詳細信息](http://www.databasejournal.com/features/mssql/article.php/3087431/T-SQL-Programming-Part-1-- -Defining-Variables-and-IFELSE-logic.htm) – 2010-11-04 17:56:09

1

你可以這樣做,而不是getdate(),它給出了當前的系統時間戳。

Cast('2010-11-04 13:28:00.000' as datetime) 
1

如何

declare @myDate as datetime 
set @myDate = '11/2/2010' 

. . . 

HAVING dbo.BOOKINGS.BOOKED = CONVERT(int, CONVERT(datetime, 
                FLOOR(CONVERT(float, @myDate))) + 2) 

應該這樣做,而且應該做自動在設定的語句中使用的日期字符串類型轉換,或者你可以只通過一個日期時間參數,如果這是在存儲過程。

+0

看起來不錯,但我的選擇語句是在asp(而不是asp.net)頁面和在selectdata =「選擇......「我會在哪裏放置聲明@myDate作爲日期時間 set @myDate = '11/2/2010' 它不起作用,當我把它放在我的查詢的開始。 – MyHeadHurts 2010-11-04 17:35:45