2016-06-08 91 views
0

嗯,我使用MS Access數據庫,我有一個字段日期。在這個字段的屬性中,我指定格式應該是'dd/mm/yyyy'。但是,當我在該字段上使用查詢時,它將使用日期格式'mm/dd/yyyy'進行搜索。我不知道爲什麼這樣做是因爲我認爲查詢適應了字段屬性,而且我還沒有能夠在線找到解決方案。我的位置和時區在歐洲設置。這是我使用的查詢:數據庫包含歐洲dateformat,但在美國日期格式查詢搜索

SELECT Count(*) AS Amount 
FROM Plays 
WHERE PersonID = 1001 AND RestaurantID = 101358 and Date = #7/6/2016# 

所以,在此查詢不檢索2016年6月7日,但2016年七月無論是PersonID和RestaurantID設置爲數字的第6;日期設置爲日期/時間。我該如何修復它,以便查詢搜索日期格式'dd/mm/yyyy',而不必每次都使用任何sql函數?

回答

0

如果您的查詢是使用VBA編寫的,則必須使用m/d/y編寫日期。而已。
我傾向於使用Format(expr, "\#mm\/dd\/yyyy\#")構造我的SQL語句。 E.g:

const kUsDtFmt = "\#mm\/dd\/yyyy\#" 
sSql = "SELECT * FROM myTable WHERE dtUpdated = " & Format(Date(), kUsDtFmt) 

注:「\」是格式字符串ESC鍵,這意味着下一個字符采取爲是

+0

我試過了。它仍然不會返回正確的值。 – AniBankai

-3

使用FormatDateTimevbShortdate確保您的日期格式化爲系統預期的格式,而不是人們喜歡看到它的方式。

+0

'FormatDateTime'用於顯示目的,而不是SQL,它總是需要用ISO序列或m/d US格式格式化日期/時間值的字符串表達式。 – Gustav

0

如果你只是希望今天的日期進行篩選,做到這一點:

SELECT Count(*) AS Amount 
FROM Plays 
WHERE PersonID = 1001 AND RestaurantID = 101358 and [Date] = Date() 

對於其他日期,使用DateSerial這樣可以讓您格式的考慮:

SELECT Count(*) AS Amount 
FROM Plays 
WHERE PersonID = 1001 AND RestaurantID = 101358 and [Date] = DateSerial(2016, 6, 7) 

如果您連接字符串表達式,使用ISO序列:

Dim SomeDate As Date 

SomeDate = DateSerial(2016, 6, 7) ' or any other date value. 
DateString = Format(SomeDate, "yyyy\/mm\/dd") 

SQL = "SELECT Count(*) AS Amount " & _ 
    "FROM Plays " & _ 
    "WHERE PersonID = 1001 AND RestaurantID = 101358 and [Date] = #" & DateString & "#" 

請注意,那日期是保留字,因此可能必須如圖所示方括號。

+0

我試過最後一個,但它返回一個語法錯誤,它顯示#\#dd \/mm \/yyyy \ ##。這是一個惱人的問題哈哈哈。 – AniBankai

+0

您沒有使用我的代碼。再次閱讀並刪除額外的「#」。 – Gustav

+0

我刪除了多餘的「#」,但由於某種原因,它仍然會出現語法錯誤。 – AniBankai

-1

韋爾普,我最終找到了解決問題的辦法:

"SELECT COUNT(*) as Amount FROM Plays WHERE PersonID = " & Me.txtPersonID &_ 
" AND RestaurantID = " & Me.txtRestaurantID & " AND Date = #" & Month(Me.txtDate)_ 
& "/" & Day(Me.txtDate) & "/" & Year(Me.txtDate) & "#" 

我期待你的一些解決方案的工作,但由於某種原因(),他們沒有。無論如何,現在搜索正確的日期並返回正確的值。感謝您花時間幫助我。

+1

這只是一個冗長的方法來爲日期值創建一個字符串表達式,而您通常會使用'Format'作爲日期值。 – Gustav

+0

我知道,我總是使用格式,但它只是因爲某些原因不起作用。我甚至讓別人看看它,代碼中沒有錯誤。 – AniBankai

+0

然後透露你的密碼,以便我們找到錯誤。 – Gustav

相關問題