2015-12-22 445 views
1

我有一個數據庫表的訪問,看起來像這樣:C#SQL WHERE日期時間今天

database

我有我的SQL的一個問題,我想有一個2 WHERE「在我的SQL語句,我在服務器瀏覽器中看起來像這樣

SELECT Created, [Action], 
     ConnectionLoc, 
     ConnectionSystem, 
     Resource, 
     [Text], 
     RecordId, 
     ToVal, 
     ClientName  
    FROM tblAudit 
WHERE (ClientName = '*Variable*') AND 
     ('WHERE Created' = '[DateTime].Today') 

我只想要今天的日期記錄顯示....因此,這一點。然而沒有任何回報。我知道第一個WHERE是正確的,因爲它自己輸出很好。這是第二個錯誤的。

+2

既然你用'C#'標記,我假設你試着用它運行這個sql,你可以使用參數化查詢並直接傳遞這個'DateTime.Today'值。 –

+0

也許這是不相關的,但爲什麼你在某些列上使用'[columnName]',而有些沒有?我會建議在任何地方或者任何地方做'[columnName]'。 另外我會建議在數據庫之前選擇'schema',就像這樣'[dbo]。[tblAudit]' –

+0

jp Houten我可能應該但我是編程新手,但我不知道約定,因爲我有沒有真實的生活經驗.. –

回答

1
WHERE ClientName = 'Variable' AND cast(Created as date) = cast(getdate() as date) 

試試這個。如果只要求一次

1

條款試試這個使用GETDATE()功能:

SELECT 
    Created, 
    [Action], 
    ConnectionLoc, 
    ConnectionSystem, 
    [Resource], 
    [Text], 
    RecordId, 
    ToVal, 
    ClientName 
FROM tblAudit 
WHERE ClientName = 'Variable' 
    AND CAST(Created AS DATE) = CAST(GETDATE() AS DATE) 
+0

cast(創建日期)= cast(getdate()作爲日期)我沒有得到這個部分..即時對不起,我仍然是一個新的程序員,我試着使用函數來返回日期,但我不知道如何使它與你的代碼一起工作。該函數被稱爲ToDate();並且是一個DateTime。 –

+0

@ArthurVerrept getdate()是SQL服務器的一個函數,所以你只需要用我的替換你的完整查詢,它應該工作。 –

+0

如果我不改變任何東西並將其替換,它仍然會出錯... –

0

對於對Access表查詢您可以使用

... WHERE ... AND [Created]=Date() 

如果[創建]列只包含日期值(沒有時間分量)。

還要注意[ClientName] = '*sometext*'將執行文字搜索,而不是一個通配符搜索。要從C#中進行通配符搜索,您需要使用[ClientName] LIKE '%sometext%'

+0

通配符是否意味着它搜索最接近的詞嗎?因爲一切都從數據庫中處理,不需要寫入文字搜索應該沒問題....謝謝! –

0

由於這是訪問,你可以這樣做:

FROM 
    tblAudit 
WHERE 
    (ClientName Like '*Variable*') AND (Created = Date()) 
2

恨的回答我的問題...首先感謝

  • 凱文Brechbühl

  • shawnt00

的問題的日期格式,在我訪問的數據庫是DD/MM/YYYY但視覺工作室正在尋找毫米/ DD/YYYY因此錯誤