2010-11-09 78 views
0

我需要將現有表格中的日期與選定的日期進行比較以求平等。我正在開發一個asp.net應用程序,我正在綁定插入一個新的記錄在已經存在的表中,我在那個asp.net表單中使用了ajax日曆擴展器,我需要將選定的日期與已經存在的日期進行比較,以便即使在添加新記錄之前,也會在gridview中顯示包含相同日期的記錄。sql查詢將現有表中的日期與選定日期進行比較?

+0

你是什麼意思與選定的日期,什麼平等(同一天,同一秒,......)? – 2010-11-09 09:56:21

+0

日期是我的輸入數據,我將這個日期與表中的日期進行比較。我只是比較日期,我想排除時間。 – 2010-11-09 10:21:39

回答

2

我完全不懂問題出在哪裏....

DECLARE @YourDate DATETIME 
SET @YourDate = '2010-11-09' 

SELECT (list of columns) 
FROM dbo.YourTable 
WHERE SomeDateColumn = @YourDate 

你需要了解的主要問題:在SQL Server中的最高版本上升到2005年的版本,你只有DATETIME數據類型,顧名思義存儲日期爲時間 - 所以精確匹配會匹配到毫秒......通常這不是您真正想要的。

你能更詳細地解釋你想要達到什麼樣的目標嗎?

+0

非常感謝你的回覆。我正在開發一個asp.net應用程序,我正在綁定插入一個新的記錄在已經存在的表中,我在那個asp.net表單中使用了ajax日曆擴展器,我需要將選定的日期與已經存在的日期進行比較,以便即使在添加新記錄之前,也會在gridview中顯示包含相同日期的記錄。希望你瞭解這種情況。是的,我只想比較排除時間的日期。 – 2010-11-09 10:12:56

2

如果你只在該日期元素平等興趣,忽略當前列值之內的時間,然後用一個條款是這樣的:

DECLARE @DateParam DATETIME 
SET @DateParam = '20101109' 

SELECT SomeField 
FROM SomeTable 
WHERE DateField >= @DateParam AND DateField < DATEADD(dd, 1, @DateParam) 

這個例子會發現其中的DateField列有所有記錄日期(&時間)。

+0

非常感謝您的回覆。我認爲這正是我正在尋找的。我只想比較排除時間的日期。 – 2010-11-09 10:25:30

+0

感謝分享。我很高興我在這裏學習新的東西..:):)...以及如何使上述查詢工作的MM/DD/YYYY格式? – 2010-11-09 10:37:13

1

我將完全從marc_s和AdaTheDev的解決方案去(和他們和我的你所需要的理解 - 你需要在你的問題,以確定您選擇的日期是什麼)

不過,假設你選擇的輸入是日期(如在其他的答案),其中YYYY-MM-DD(marc_s)或YYYYMMDD的格式(adathedev),以下替換也應努力

DECLARE @Date DATETIME 
SET @Date = '2010/10/10' 

SELECT * 
FROM SomeTable 
WHERE CONVERT(VARCHAR(10), DateField, 126) = @Date 

當你聲明的日期時間和僅使用日期設置 - 時間設置爲12:00:00.000。所以使用等號運算符時,它會查找與時間完全匹配的數據(如果您使用GETDATE()等方法插入表中,這種情況極不可能)。

我的解決方案只是在查詢時省去數據庫中的字段。但我仍然會與其他解決方案一起去。這只是一種選擇。

+1給其他人。

+0

感謝您的回覆哥們。我想你是對的,我只是想比較不包括時間的日期。我認爲我的日期時間格式是MM/DD/YYYY現在如何使這種格式的上述查詢工作? – 2010-11-09 10:26:15

+2

只是爲了解釋這種差異,假設DateField已編入索引,此方法將防止因使用CONVERT而使用索引。這就是你應該儘量避免在匹配時操縱列本身。 – AdaTheDev 2010-11-09 10:29:57

+0

@AdaTheDev - 正確。謝謝你的澄清。沒有提到爲什麼我的解決方案不適用於其他解決方案。 – Kamal 2010-11-09 10:31:32

相關問題