gpt4 book ai didi

sql - 将 varchar 数据类型转换为 datetime 数据类型导致 SQL 查询中的值超出范围

转载 作者:行者123 更新时间:2023-12-02 06:33:02 28 4
gpt4 key购买 nike

我有一个表,其中有一列存储日期和时间。我需要编写一个查询以仅获取该列中的日期,

SELECT CAST(CONVERT(VARCHAR, LoginTime, 101) AS datetime) FROM AuditTrail 

但是,当我运行查询时,我收到此错误:

The conversion of a varchar data type to a datetime data type resulted in an out-of-range value.



列中的数据是日期时间,例如:2012-06-18 12:08:04.000
所以我只需要提取日期并删除时间
注意 [Logintime] 列是数据时间格式

最佳答案

在 SQL Server 中尝试 ISDATE() 函数。如果为 1,则选择有效日期。如果 0 选择无效日期。

SELECT cast(CONVERT(varchar, LoginTime, 101) as datetime)  
FROM AuditTrail
WHERE ISDATE(LoginTime) = 1
  • Click here 查看结果

  • 编辑:

    根据您的更新 我只需要提取日期并删除时间 ,然后您可以简单地使用内部 CONVERT
    SELECT CONVERT(VARCHAR, LoginTime, 101) FROM AuditTrail 

    或者
    SELECT LEFT(LoginTime,10) FROM AuditTrail

    编辑 2:

    错误的主要原因在于您在 WHERE 子句中的日期。ie,
    SELECT cast(CONVERT(varchar, LoginTime, 101) as datetime)  
    FROM AuditTrail
    where CAST(CONVERT(VARCHAR, LoginTime, 101) AS DATE) <=
    CAST('06/18/2012' AS DATE)

    将不同于
    SELECT cast(CONVERT(varchar, LoginTime, 101) as datetime)  
    FROM AuditTrail
    where CAST(CONVERT(VARCHAR, LoginTime, 101) AS DATE) <=
    CAST('18/06/2012' AS DATE)

    结论

    EDIT 2 中,第一个查询尝试以 mm/dd/yyyy 格式进行过滤,而第二个查询尝试以 dd/mm/yyyy 格式进行过滤。它们中的任何一个都会失败并抛出错误

    The conversion of a varchar data type to a datetime data type resulted in an out-of-range value.



    因此,请确保使用 mm/dd/yyyydd/mm/yyyy 格式过滤日期,以您的数据库中适用的格式为准。

    关于sql - 将 varchar 数据类型转换为 datetime 数据类型导致 SQL 查询中的值超出范围,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28271414/

    28 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com