Sql server日期格式的字符串如何转换成日期类型?

时间:2022-03-09 01:41:29
我现在需要将一个日期格式的字符串转换成日期类型,如何地转换?
如:'2012-03-18'
    '20120318'
    '201203181513'
    '2012-03-18 15:13'

11 个解决方案

#1


Convert函数

#2


引用 1 楼 chinajiyong 的回复:
Convert函数

具体用法
http://www.w3school.com.cn/sql/func_convert.asp

#3


 and (CONVERT(date, oh.CREATE_DATE, 23)>=CONVERT(date, '201203017', 23) 
and CONVERT(date, oh.CREATE_DATE, 23)<=CONVERT(date, '201203017', 23))

用convert报错,


消息 241,级别 16,状态 1,第 1 行
从字符串转换日期和/或时间时,转换失败。

#4


引用 1 楼 chinajiyong 的回复:
Convert函数

具体用法
http://www.w3school.com.cn/sql/func_convert.asp

#5


定义和用法
CONVERT() 函数是把日期转换为新数据类型的通用函数。
CONVERT() 函数可以用不同的格式显示日期/时间数据。

#6


cast(col as datetime)

#7


引用楼主 wangxin_wangxin 的回复:
我现在需要将一个日期格式的字符串转换成日期类型,如何地转换?
如:'2012-03-18'
  '20120318'
  '201203181513'
  '2012-03-18 15:13'
你这样的数据貌似不规则.需要进行一些转换.以下仅仅是针对你目前的数据进行的转换.不排除你还存在其他什么格式的数据.
create table tb(col varchar(20))
insert into tb values('2012-03-18')
insert into tb values('20120318')
insert into tb values('201203181513')
insert into tb values('2012-03-18 15:13')
go

select col,col_time = (case when len(col) > 8 and charindex('-',col) = 0
            then cast(substring(col,1,4) + '-' + substring(col,5,2) + '-' + substring(col,7,2) + ' ' + substring(col,9,2) + ':' + substring(col,11,2) as datetime)
            else cast(col as datetime)
       end)
from tb

drop table tb

/*
col                  col_time                                               
-------------------- ------------------------------------------------------ 
2012-03-18           2012-03-18 00:00:00.000
20120318             2012-03-18 00:00:00.000
201203181513         2012-03-18 15:13:00.000
2012-03-18 15:13     2012-03-18 15:13:00.000

(所影响的行数为 4 行)
*/

#8


可以用between and 啊。我这么做过、lz可以试试、

#9


col                  col_time                                               -------------------- ------------------------------------------------------ 2012-03-18           2012-03-18 00:00:00.00020120318             2012-03-18 00:00:00.000201203181513         2012-03-18 15:13:00.0002012-03-18 15:13     2012-03-18 15:13:00.000

需要把col_time varchar类型 更改为datatime 类型怎么操作

#10


select CAST(date1  as date) from dbo.date11

#11


select CAST(date1 as date) from dbo.date11

#1


Convert函数

#2


引用 1 楼 chinajiyong 的回复:
Convert函数

具体用法
http://www.w3school.com.cn/sql/func_convert.asp

#3


 and (CONVERT(date, oh.CREATE_DATE, 23)>=CONVERT(date, '201203017', 23) 
and CONVERT(date, oh.CREATE_DATE, 23)<=CONVERT(date, '201203017', 23))

用convert报错,


消息 241,级别 16,状态 1,第 1 行
从字符串转换日期和/或时间时,转换失败。

#4


引用 1 楼 chinajiyong 的回复:
Convert函数

具体用法
http://www.w3school.com.cn/sql/func_convert.asp

#5


定义和用法
CONVERT() 函数是把日期转换为新数据类型的通用函数。
CONVERT() 函数可以用不同的格式显示日期/时间数据。

#6


cast(col as datetime)

#7


引用楼主 wangxin_wangxin 的回复:
我现在需要将一个日期格式的字符串转换成日期类型,如何地转换?
如:'2012-03-18'
  '20120318'
  '201203181513'
  '2012-03-18 15:13'
你这样的数据貌似不规则.需要进行一些转换.以下仅仅是针对你目前的数据进行的转换.不排除你还存在其他什么格式的数据.
create table tb(col varchar(20))
insert into tb values('2012-03-18')
insert into tb values('20120318')
insert into tb values('201203181513')
insert into tb values('2012-03-18 15:13')
go

select col,col_time = (case when len(col) > 8 and charindex('-',col) = 0
            then cast(substring(col,1,4) + '-' + substring(col,5,2) + '-' + substring(col,7,2) + ' ' + substring(col,9,2) + ':' + substring(col,11,2) as datetime)
            else cast(col as datetime)
       end)
from tb

drop table tb

/*
col                  col_time                                               
-------------------- ------------------------------------------------------ 
2012-03-18           2012-03-18 00:00:00.000
20120318             2012-03-18 00:00:00.000
201203181513         2012-03-18 15:13:00.000
2012-03-18 15:13     2012-03-18 15:13:00.000

(所影响的行数为 4 行)
*/

#8


可以用between and 啊。我这么做过、lz可以试试、

#9


col                  col_time                                               -------------------- ------------------------------------------------------ 2012-03-18           2012-03-18 00:00:00.00020120318             2012-03-18 00:00:00.000201203181513         2012-03-18 15:13:00.0002012-03-18 15:13     2012-03-18 15:13:00.000

需要把col_time varchar类型 更改为datatime 类型怎么操作

#10


select CAST(date1  as date) from dbo.date11

#11


select CAST(date1 as date) from dbo.date11