使用Where子句中的Cast和Convert函数获取查询结果

时间:2019-04-18 18:49:29

标签: sql sql-server

我正在尝试将varchar列映射到datetime。为此,我需要过滤掉无法转换为datetime的值:

SELECT myfield 
FROM my_table
WHERE (SELECT convert(varchar(10), cast(myfield as datetime), 112) ) = 0

我收到此错误:

  

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

2 个答案:

答案 0 :(得分:1)

如果使用上面的SQL Server 2012,则可以使用try_cast而不是“ cast”:

SELECT myfield FROM my_table
WHERE try_cast(myfield as datetime) is not null

编辑: 删除了where子句中的select。

答案 1 :(得分:1)

SELECT myfield FROM my_table
WHERE isDate(myField)=1