在SQL中解析日期
我的数据库中有一列当前为varchar。数据如下所示:在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
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';