代码之家  ›  专栏  ›  技术社区  ›  Gavin

SQL Server 2008 varchar到datetime

  •  1
  • Gavin  · 技术社区  · 15 年前

    我有一个表,不幸的是,许多日期存储为字符串。

    我有许多报告将它们强制转换为日期时间并按其筛选。直到今天我才发现这个错误

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

    日期都以“年-月-日”的格式存储,并且都是有效的。

    如果我运行以下SQL语句

    SELECT CAST('2010-06-02' AS DateTime) 
    

    我希望得到“2010-06-02”,但是到今天为止,我得到“2010-02-06”,这与SQL格式日期的方式有所不同。我已经查看了服务器上的区域设置,一切看起来都是正确的。

    还有什么可能导致这种情况?

    3 回复  |  直到 15 年前
        1
  •  0
  •   Denis Valeev    15 年前

    SELECT CAST(replace('2010-06-02', '-', '') AS DateTime) 
    

    set dateformat ydm

        2
  •  3
  •   codingbadger    15 年前

    select convert(datetime, '2010-06-02',101)
    
        3
  •  0
  •   Damian Leszczyński - Vash    15 年前
    推荐文章