我有这种格式的varchar日期:
03/13/2015 : 2130
我希望将其转换为日期时间:
2015-03-13 21:30:00.000
我见过这样的例子,但对我正在寻找的东西不起作用
DECLARE @Date char(8)
set @Date='12312009'
SELECT CONVERT(datetime,RIGHT(@Date,4)+LEFT(@Date,2)+SUBSTRING(@Date,3,2))
答案 0 :(得分:2)
这将有效,假设所有日期时间部分都以0一致填充。
DECLARE @Input VARCHAR(50);
SET @Input = '03/13/2015 : 2130';
SET @Input = LEFT(@Input, 10) + ' ' + LEFT(RIGHT(@Input, 4), 2) + ':' + RIGHT(RIGHT(@Input, 4), 2);
PRINT @Input;
PRINT CONVERT(DATETIME, @Input);
PRINT CONVERT(VARCHAR(50), CONVERT(DATETIME, @Input), 121);
输出:
03/13/2015 21:30
2015年3月13日晚上9:30
2015-03-13 21:30:00.000
答案 1 :(得分:1)
select convert(datetime,'12312009')
Msg 242, Level 16, State 3, Line 1
The conversion of a char data type to a datetime data type resulted in
an out-of-range datetime value
所以试试这个:
DECLARE @Date char(8)
set @Date='12312009'
SELECT CONVERT(datetime,RIGHT(@Date,4)+LEFT(@Date,2)+SUBSTRING(@Date,3,2))
输出:
2009-12-31 00:00:00.000
(1行受影响)
答案 2 :(得分:1)
我认为这是你正在寻找的东西:
DECLARE @Date VARCHAR(20)
SET @Date = '03/13/2015 : 2130'
-- Format the date string
SET @Date = LEFT(@Date, 10) + ' ' + SUBSTRING(@Date, 14, 2) + ':' + SUBSTRING(@Date, 16, 2)
-- convert to date
Select CONVERT(varchar, CONVERT(DATETIME, @Date), 121)
答案 3 :(得分:0)
如果转换不适合您,则可以使用mid获取日期,月份,年份等。然后使用str_to_date以所需格式构建日期时间。
答案 4 :(得分:0)
Sql功能:
CONVERT(data_type(length),expression,style)
你可以试试这个:
CONVERT(datetime,@varCharDate,121)
有关详情,请参阅此link