varchar转datetime解决方案
varchar转datetime
有如下的一个需求:
数据库表table1中有一个列column1,这个列的类型是varchar(max),现在需要把这个列中的数据转为日期类型(例:2011-01-19 12:45:12)并按日期来排序,这个列中的值不一定是一个合法的日期值,例如可以为以下值之一:
"2011-1-19"
"1-19"
"233321"
"随意字符";
当能够转换成功时,返回转换后的值,否则返回"1900-1-1 00:00:00";
------解决方案--------------------
有如下的一个需求:
数据库表table1中有一个列column1,这个列的类型是varchar(max),现在需要把这个列中的数据转为日期类型(例:2011-01-19 12:45:12)并按日期来排序,这个列中的值不一定是一个合法的日期值,例如可以为以下值之一:
"2011-1-19"
"1-19"
"233321"
"随意字符";
当能够转换成功时,返回转换后的值,否则返回"1900-1-1 00:00:00";
------解决方案--------------------
- SQL code
--> 测试数据:# if object_id('tempdb.dbo.#') is not null drop table # create table #(s varchar(9)) insert into # select '2011-1-19' union all select '1-19' union all select '233321' union all select '随意字符' select *, convert(datetime, case isdate(s) when 1 then s else '1900' end) from # /* s --------- ----------------------- 2011-1-19 2011-01-19 00:00:00.000 1-19 1900-01-01 00:00:00.000 233321 1900-01-01 00:00:00.000 随意字符 1900-01-01 00:00:00.000 */
------解决方案--------------------
------解决方案--------------------
------解决方案--------------------
有时候还是自己想一下,例如你若看CONVERT的说明就会发现,原来日期还有这么多格式。