好吧,我正在使用MS Access数据库,我有一个字段Date。在该字段的属性中,我已指定格式应为'dd / mm / yyyy'。但是,当我在字段上使用查询时,它会使用日期格式“mm / dd / yyyy”进行搜索。我不知道它为什么这样做,因为我认为查询适应了字段属性,我无法在线找到解决方案。我的位置和时区是在欧洲设置的。这是我使用的查询:
SELECT Count(*) AS Amount
FROM Plays
WHERE PersonID = 1001 AND RestaurantID = 101358 and Date = #7/6/2016#
因此,在此查询中,它不会搜索2016年6月7日,而是搜索2016年7月6日.DipIDID和RestaurantID都设置为数字;日期设置为日期/时间。我如何修复它,以便查询搜索日期格式'dd / mm / yyyy',而不必每次都使用任何sql函数?
答案 0 :(得分: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 )
注意:“\”是格式字符串中的转义键,表示下一个字符 。
答案 1 :(得分: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 & "#"
请注意,日期是一个保留字,因此可能必须如图所示括起来。
答案 2 :(得分:-1)
Welp,我最终找到了解决问题的方法:
"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) & "#"
我预计你的一些解决方案可以正常工作,但由于某些原因,他们没有。无论如何,现在搜索到正确的日期并返回正确的值。谢谢你花时间帮助我。
答案 3 :(得分:-3)
将FormatDateTime
与vbShortdate
一起使用,以确保您的日期格式符合系统预期的格式,而不是人们喜欢的日期。