【问题标题】:SQL Server Compare Month-Day portion of dateSQL Server 比较日期的月日部分
【发布时间】:2016-04-22 16:16:14
【问题描述】:

我正在尝试比较 2 个人,看看谁的生日在今年早些时候。我正在尝试组合一个解决方案,我使用 RIGHT(DOB, 5) 从日期时间字段中获取 mm-dd 并将其与 '1900' 连接以创建一个新的日期字段并将其用于比较。

 CONVERT(DATE,'1900-' + RIGHT(DOB,5),126) DOB

但是我收到以下错误:

从字符串转换日期和/或时间时转换失败。

对于如何解决这个问题有什么建议吗?

【问题讨论】:

  • 你有什么 DOB 值的例子吗?
  • 您的 DOB 列实际上是日期列吗?根据您的示例,它看起来像一个字符串,其中很可能包含用于构造日期的无效数据。
  • 删除转换并查看值。你的数据一定有问题。
  • 您正在使用 RIGHT(SomeDate, 5),它不会返回 mm-dd。它将返回一个冒号、分钟和 AM/PM。选择权(getdate(), 5)

标签: sql sql-server date concatenation


【解决方案1】:

试试这个

right(convert (char(10), dob, 120), 5)

120 格式为 yyyy-mm-dd

【讨论】:

    【解决方案2】:

    你可以使用

    format(date,'MMdd')
    

    【讨论】:

    • IF 他在 SQL Server 2012 或更高版本上 - 是的 - 这是 2012 年的新功能,不过 - 不可用在旧版本中
    猜你喜欢
    • 1970-01-01
    • 2017-11-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-11-03
    • 1970-01-01
    • 1970-01-01
    • 2017-05-29
    相关资源
    最近更新 更多