2014-08-30 109 views
1

我正在寫一個存儲過程在SQL!給定日期參數被認爲是日期時間參數

我必須在特定日期取得記錄。

我使用此查詢:

Declare @FromDate datetime 
set @FromDate = '06/02/2014' 

select * from Table where Date = @FromDate 

其實,在數據庫中有10個記錄在該日期,但它顯示,因爲@FromDate正在這樣06/02/2014 00:00:00.000

如果只有兩個記錄我寫這樣的查詢意味着它可以正常工作!

select * from Table 
where Date between '2014-08-28 00:00:00.000' and '2014-08-28 23:59:59.999' 

如何解決這個問題?我需要得到那個特定日期的所有記錄。

請幫幫我!

+0

如果你的SQL Server 2008 ** **或更高版本上,你只需要日期(沒有時間部分),你應該使用'DATE'數據類型,確切地說 - 只存儲** **日期,沒有時間部分,因此選擇一個日期變得非常容易 – 2014-08-30 06:22:16

回答

0

如果您將DateTime轉換爲Nvarchar您的問題將得到解決。

嘗試此查詢:

Declare @Date datetime='2014-08-28 00:00:00.000' 

select * from Table 
where CONVERT(nvarchar(20),Date,105) = CONVERT(nvarchar(20),@Date,105) 
+0

好主意,謝謝麥克:) – 2014-08-30 06:34:24

+1

@ Jake745如果你想使用索引,不是一個好主意日期列來查找您正在查找的行。 – 2014-08-31 16:46:47

2

如果@FromDate的數據類型爲datetimeTable.Date的也是數據類型的datetime則:

Declare @FromDate datetime = '2014-06-02'; 

Select Table.Date 
From Table 
Where Table.Date >= @FromDate And Date < DateAdd(day, 1, Table.Date) 

上面,我們建立一個包容性的下限(任何等於或晚於2014年6月2日)和一個獨特的上限(任何早於2014-06-03的),但是隻定義一次變量。所以,有效的查詢檢查2014-06-02 <= FromDate < 2014-06-03