【问题标题】:How to compare datetime2 with datetime如何比较 datetime2 和 datetime
【发布时间】:2015-07-24 14:09:14
【问题描述】:

我需要将一个数据库的属性 datetime2 与另一个数据库的属性 datetime 进行比较,因为我找不到将 datetime 转换为 datetime2 的方法。

我测试这句话:

select CAST(FechaAlta AS datetime) from tutors

但返回此错误消息:

将 datetime2 数据类型转换为 datetime 数据类型导致值超出范围。

【问题讨论】:

标签: sql-server datetime sql-server-2014 datetime2


【解决方案1】:

datetime2 数据类型的范围比 datetime 更广 - datetime2 可以保存介于 0001-01-019999-12-31 之间的任何日期,而 datetime01/01/1753 开头(原因不明涉及到第四代切斯特菲尔德伯爵,现在太神秘了,无法进入)。

如果要将 datetime2 转换为 datetime,则必须处理超出范围的值,例如:

SELECT CASE WHEN FechaAlta < '1753-01-01' THEN NULL ELSE CAST(FechaAlta AS DateTime) END AS FechaAlta_As_DateTime FROM Tutors

【讨论】:

    【解决方案2】:

    首先获取相同datetime格式的datetime2和datetime。假设他们都属于date datatype,而您正在处理Oracle

    TO_DATE(TO_CHAR(DATETIME2,'YYYYMMDD HH24:MI:SS')) = TO_DATE(TO_CHAR(DATETIME,'YYYYMMDD HH24:MI:SS')) 
    

    【讨论】:

    • 问题被标记为sql-server,而不是oracle。错误消息也明显是 SQL Server 的“风味”。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-10-07
    • 2014-05-02
    • 1970-01-01
    • 2012-06-20
    相关资源
    最近更新 更多