2009-11-03 77 views
1

我很難從特定日期的數據庫中獲取記錄。這是我現在的SQL命令:MS Access SELECT和WHERE

SELECT * FROM ict1 WHERE date='26/03/1992' 

它應該從我的數據庫返回一條記錄。 「日期」是一列,其中一條記錄的值爲'26/03/1992'。我測試了數據庫連接,我可以使用:

SELECT * from ict1 

所以我知道不是這樣。這可能只是SQL語法有很大的不同,我習慣於MySQL:@)

應該提到我使用的.NET與OleDbConnection。

謝謝。

+0

什麼是日期列的類型?那是什麼是表*中的日期列的類型在訪問*中? – Murph 2009-11-03 10:32:09

+0

我對這兩個回覆發表了評論。 – Fionnuala 2009-11-03 11:34:40

回答

0

使用日期爲YYYY/MM/DD格式:

SELECT * FROM ict1 WHERE date='1992/03/26'

SELECT * FROM ict1 WHERE date=#1992/03/26#

+1

在Access中,日期分隔符是散列,而不是引號。 – Fionnuala 2009-11-03 11:32:23

+0

正式注意。謝謝。 – 2009-11-03 13:58:52

4

通常日期需要格式化爲像下面

Select * from ict1 where date= #03/26/1992# 

訪問#表示訪問日期。 格式化爲'10/03/1992'的日期要格外小心,因爲它可能意味着3月10日或10月3日,具體取決於你的位置。

另外#1992至1903年/ 26#也適用

+0

使用yyyy/mm/dd更安全,因爲它對訪問和用戶都是明確的,無論您的語言環境在哪裏。 – Fionnuala 2009-11-03 11:33:59

+0

@Remou - 我是aggree。我被之前的日期格式所吸引。 – 2009-11-03 21:14:27

+0

在某些情況下(雖然不是這個),ISO格式在Access中打破了,所以通常的建議是使用像「d-mmm-yyyy」這樣的格式,其中月份是用字母拼出而不是數字。坦率地說,我認爲在第一個地方使用Format()是錯誤的,而只是用DateSerial()傳遞日期,這絕對不會出錯。當然,在這種情況下,OLEDB無法工作。 – 2009-11-04 01:53:27

0

您可能需要使用日期比較功能,而非日期=#XXXX/XX/XX#。由於格式和數據類型問題,日期比較不會產生預期的結果。在SQL Server中,日期可以作爲日期時間或日期數據類型存儲。你需要確保你比較相同類型和格式的東西。

DateDiff(「d」,#1992/03/26#,date)= 0