如何格式化SQL查询中的日期?

时间:2015-01-07 12:33:02

标签: sql vba

您好我在VBA(MS ACCESS)上使用MS JET OLEDB 4.0

SQL = "SELECT COUNT(Date) FROM [Orders] WHERE [Orders].[Date] BETWEEN " & "#" & StartDate & "#" & " AND " & "#" & EndDate & "#"

[Date]的格式类似于f dd / mm / yyyy(法语),StartDate和EndDate的格式类似于mm / dd / yyyy(两个日期对象)。

我认为BETWEEN只比较格式为mm / dd / yyyy的日期,所以有没有像将日期格式转换为mm / dd / yyyy的功能,以便中间函数可以正确比较?

编辑:使用字符串代替以下日期:

StartDateFormatted = Format(StartDate,"dd/mm/yyyy")
EndDateFormatted = Format(EndDate,"dd/mm/yyyy")

以确保startdate和enddate格式。它还没有工作。

我还要承担两件事:

  • BETWEEN仅比较mm / dd / yyyy格式

  • 我必须使用函数将[Date]格式化为mm / dd / yyyy

感谢@Maciej Los回答我的问题。

3 个答案:

答案 0 :(得分:2)

始终使用ISO日期格式YYYY-MM-DD,您将没有任何问题。没有格式化。

答案 1 :(得分:1)

使用Format function

SQL = "SELECT COUNT(Date)" & vbcr & _
"FROM [Orders]" & vbcr & _
"WHERE [Orders].[Date] BETWEEN #Format(" & StartDate & "], 'MM/dd/yyyy')# AND #Format(" & EndDate & ",'MM/dd/yyyy')#"

答案 2 :(得分:1)

我注意到在使用Between时查询的SQL编译时,它将它转换为MM / DD / YYYY,直到我使用Format(startdate,“mm / dd / yyyy”)它才能工作。请查看快餐店。

enter image description here