簡體   English   中英

如何在SQL Server 2008中將where子句與datetime一起使用

[英]How to use Where clause with datetime in SQL Server 2008

我寫了這個查詢:

SELECT * 
FROM w_tbl 
WHERE DID NOT IN (SELECT DId FROM tbl_Assign) 
  AND CAST(MeasDateTime AS Date) = @dta 
ORDER BY 
    CAST(MeasDateTime as DATE) DESC

如您所見,我正在發送參數化查詢。

所以我把@dta放在24/09/2010 00:00:00

但是我得到這個錯誤:

從承租人字符串轉換日期和/或時間時,轉換失敗。

我告訴你我為什么這樣做和我的目的:

我有一個datetime列,並且我只想按日期選擇/獲取所有數據(即,我不想明智地獲取datetime,它只能根據日期)

如果只想按日期選擇並且具有DateTime類型,請使用日期函數:

DATEADD ( dd , 0 , DATEDIFF ( dd , 0 , @dta))

因此,在您的情況下:

SELECT * 
FROM w_tbl 
WHERE DID NOT IN (SELECT DId FROM tbl_Assign) 
  AND DATEADD ( dd , 0 , DATEDIFF ( dd , 0 , MeasDateTime)) = DATEADD ( dd , 0 , DATEDIFF ( dd , 0 , @dta)) 
ORDER BY 
    MeasDateTime DESC -- No need for CAST/CONVERT here, it will be ok either way

第一次檢查@dta值原因24/09/2010可能是錯誤的日期。 嘗試使用2010年9月24日或2010年9月24日進行檢查。 始終avoid confusion in dd/MM/yyyy and MM/dd/yyyy使用月份的MMM。 SQL使用MMM正確處理日期時間格式。 就像dd-MMM-yyyy。 默認情況下,SQL使用美國標准,日期格式為MM / dd / yyyy。

謝謝。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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