【问题标题】:How to format date in a SQL query?如何在 SQL 查询中格式化日期?
【发布时间】:2015-03-05 08:33:44
【问题描述】:

您好,我在 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 的日期,所以有没有一种方法可以将 [Date] 格式转换为 mm/dd/yyyy 以便函数之间可以正确比较?

编辑:使用字符串而不是如下日期:

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

以便确定开始日期和结束日期的格式。还是不行。

我只能假设两件事:

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

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

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

【问题讨论】:

  • 不知道是否有帮助,但找到了一篇关于转换功能的文档:即格式(现在,“MM/dd/yyyy”)udemy.com/blog/vba-format-date
  • :/ 我刚才读过!
  • 但是,由于列应该是日期字段,格式不应该对比较有任何影响,还是我错了!? [Orders].[Date] 是否可能是另一种类型(可能是文本)?
  • 我会执行“select getDate()”并观察返回的格式,然后在查询中使用该格式。另一件事是他的日期格式是数据库的本地化设置。
  • @MaciejLos,这是其中之一,仅仅因为你可以并不意味着你应该在我的书中做事。

标签: sql vba


【解决方案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')#"

【讨论】:

  • 我不能用那个。 VBA有“问题。你能格式化吗?
  • 试试between #" & Format([StartDate], "MM/dd/yyyy") & "# AND #" & Format([EndDate], "MM/dd/yyyy") & "#"
【解决方案2】:

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

【讨论】:

    【解决方案3】:

    我在使用 Between 时从查询的 SQL 编译中注意到,它会将其转换为 MM/DD/YYYY,并且在我使用 Format(startdate, "mm/dd/yyyy") 之前它不起作用。请查看 snapshop。

    【讨论】:

      猜你喜欢
      • 2023-01-21
      • 1970-01-01
      • 2015-01-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-06-17
      • 1970-01-01
      • 2012-09-23
      相关资源
      最近更新 更多