【问题标题】:How to convert Datetime to Date and use in Where clause?如何将日期时间转换为日期并在 Where 子句中使用?
【发布时间】:2016-07-19 20:47:47
【问题描述】:

我缺少什么我需要将 datetime 转换为 date 并在 where 子句的 between 语句中使用它。

创建日期 2016-07-19 16:00:19.710

 WHERE convert(Date,CreatedDate) >='2016-06-01' AND convert(Date,CreatedDate) <= '2016-06-31'

从字符串转换日期和/或时间时,我遇到了转换失败。

【问题讨论】:

  • 为什么将日期存储为字符串?收到错误后,您可能有无效数据(或不同格式)。
  • 仅将日期时间更改为日期的正确语法是什么?
  • 如果您使用的是 SQL Server 2012 或更新版本,您可以使用 try_convert,但仍然要修复您的数据类型
  • 解释什么?不要将日期存储为字符串,根据错误消息,您必须这样做

标签: sql-server


【解决方案1】:

您可以使用cast(CreatedDate as Date) 进行转换。但我认为你不需要在这种情况下进行转换来比较。

只要做:

WHERE CreatedDate between '2016-06-01' and '2016-06-31' 应该没问题

【讨论】:

  • 不,仍然需要转换
  • 尝试了转换,但仍然失败:“从字符串转换日期和/或时间时转换失败。”
  • 我认为您的 CreatedDate 列中可能有一些无效的数据格式,导致无法转换。你能做WHERE ISDATE(CreatedDate) = 0 看看它返回什么行吗?
【解决方案2】:

谢谢,事实证明我需要格式化搜索条件以包括 CreatedDate>= '2016-07-01 00:00:00.000'AND CreatedDate

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-08-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-08-24
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多