我正在尝试将两种类型的字符串转换为日期格式,但无法执行其中任何一种。
具有预期输出的有问题的输入字符串如下:
输入1: 20100614191522
预期输出1: 6/14/2010 7:15:22 PM
输入2: 2010/12
预期输出2: 12/1/2010 12:00:00 AM
我试过了,
select convert(datetime,'20100614191522',109)
我尝试使用“转换”功能使用不同的样式参数。但我总是得到以下错误。 将VARCHAR值'20100614191522'显式转换为DATETIME字段时出现语法错误。 消息:249,等级:16,状态:1
你能帮助我,如何实现同样的目标。
提前致谢。
答案 0 :(得分:2)
您尝试过的样式参数是将datetime data
转换为字符类型。在这里,你要求相反的转换。
输入1
declare @str varchar(20)
set @str = '20100614191522'
select convert(datetime,substring(@str, 5, 2 ) + '/' + substring(@str, 7, 2 ) + '/' + substring(@str, 1, 4 ) + ' ' + substring(@str, 9, 2 ) + ':' + substring(@str, 11, 2 ) + ':' + substring(@str, 13, 2 ) )
给出
Jun 14 2010 7:15PM
输入2
declare @str varchar(20)
set @str = '2010/12'
select convert(datetime, @str + '/01')
给出
Dec 1 2010 12:00AM