Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/69.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_Sql Server 2012_Sql Server 2014 - Fatal编程技术网

在SQL中解析日期

在SQL中解析日期,sql,sql-server-2012,sql-server-2014,Sql,Sql Server 2012,Sql Server 2014,我的数据库中有一列当前为varchar。数据如下所示: Thu, 4 Jul 2013 09:18:24 Thu, 11 Jul 2013 10:07:01 Tue, 28 Jan 2014 11:38:37 Fri, 26 Jul 2013 14:13:42 我希望能够将其转换为日期,以便获得最新的记录。假设字符串总是以三个字符的day文本开头,后跟逗号和空格,您可以使用substring()删除开头,然后使用cast()要将字符串转换为正确的日期时间,如下所示: cast(substri

我的数据库中有一列当前为varchar。数据如下所示:

Thu, 4 Jul 2013 09:18:24 
Thu, 11 Jul 2013 10:07:01
Tue, 28 Jan 2014 11:38:37
Fri, 26 Jul 2013 14:13:42

我希望能够将其转换为日期,以便获得最新的记录。

假设字符串总是以三个字符的day文本开头,后跟逗号和空格,您可以使用
substring()
删除开头,然后使用
cast()
要将字符串转换为正确的日期时间,如下所示:

cast(substring(your_date_col, 6, len(your_date_col)) as datetime)


还有很多其他方法可以做到这一点;如果您想了解更多,请阅读cast/convert和string函数。(并且考虑使用TyryCase/TyyLeTimeTo)。

SQL Server 2012,可以使用:

TRY_PARSE:返回表达式的结果,并转换为请求的数据 键入,如果强制转换失败,则键入或null


请描述您最近的工作及其结果。您需要使用CONVERT(),并且需要将日期字符串与相应的日期值相匹配。SQL server比Oracle更难转换日期。@Doug,Mitch Wheat下面的回答看起来很简单……我目前仍在使用SQL server 2008,因此这是新版本中的一个不错的功能。SQL server 2008的主流支持于2014年7月8日结束;扩展支持将于2019年7月9日结束
-- If the culture argument isn't provided, the language of current session is used.
SELECT TRY_PARSE('Thu, 4 Jul 2013 09:18:24' AS datetime2) AS 'datetime2';