Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/81.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何处理SQL中的日期转换错误?_Sql_String_Tsql_Error Handling_Type Conversion - Fatal编程技术网

如何处理SQL中的日期转换错误?

如何处理SQL中的日期转换错误?,sql,string,tsql,error-handling,type-conversion,Sql,String,Tsql,Error Handling,Type Conversion,所以我尝试将SQL数据库中的字符串转换为日期时间值 我在这样的表格中有一些日期: 23/12/2013 16:34:32 24/12/2013 07:53:44 24/12/2013 09:59:57 24/12/2013 12:57:14 24/12/2013 12:48:49 24/12/2013 13:04:17 24/12/2013 13:15:47 24/12/2013 13:21:02 24/12/2013 14:01:28 24/12/2013 14:02:22 24/12/201

所以我尝试将SQL数据库中的字符串转换为日期时间值

我在这样的表格中有一些日期:

23/12/2013 16:34:32
24/12/2013 07:53:44
24/12/2013 09:59:57
24/12/2013 12:57:14
24/12/2013 12:48:49
24/12/2013 13:04:17
24/12/2013 13:15:47
24/12/2013 13:21:02
24/12/2013 14:01:28
24/12/2013 14:02:22
24/12/2013 14:02:51
它们被存储为字符串

我想把它们转换成datetime

SELECT CONVERT(datetime, analysed, 103 )
FROM OIL_SAMPLE_UPLOAD
但是,当我运行查询时会收到此消息

结果将varchar数据类型转换为datetime数据类型 在超出范围的值中

大概是因为某些值的格式不正确(尽管我还没有发现其中任何一个)

如果某些值不能转换,也没关系,我只需要一种处理这种情况的方法


类似于ISNULL(CONVERT(datetime,analysisted,103))的东西也不错,只是CONVERT函数在失败时不返回NULL

对于SQL Server,您可以使用函数检查值是否为有效日期

SELECT CASE WHEN ISDATE(analysed)=1 THEN CONVERT(datetime, analysed, 103 ) 
            ELSE '' END
FROM OIL_SAMPLE_UPLOAD

如果您只需要日期部分,则使用
子字符串
并按如下方式计算日期。这至少可以为您提供正确的日期部分

SELECT CONVERT(datetime, SUBSTRING(analysed, 0, 11), 103 )
FROM OIL_SAMPLE_UPLOAD

您可以使用或函数

来清除字符串的格式为dd/MM/yyyy hh:MM:ss我不希望对正在使用的数据库进行任何更改。ie:我更喜欢更改设置日期格式dmy;除非更改仅在查询期间存在。这不会对数据库进行任何更改,它仅用于检查持续时间查询执行情况。要使其正常工作,我需要将DATEFORMAT设置为dmy。我可以使用STUFF(STUFF(已分析,4,2,子字符串(已分析,1,2)),1,2,子字符串(已分析,4,2))修复此问题需要11个字符选择转换(日期时间,子字符串(已分析,0,11),103)注意,这些函数仅在SQL Server 2012及以后版本(110)中可用