如何在 sql 中将 varchar 日期转换为日期时间
How to convert varchar date into datetime in sql
我有这种格式的 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))
OP 想要 mmddyy,而普通的 convert 对此不起作用:
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 行受影响)
假设所有日期时间部分始终用 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
Mar 13 2015 9:30PM
2015-03-13 21:30:00.000
如果转换对您不起作用,那么您可以使用 mid to take date, month, year etc. And then use str_to_date 以所需格式构建日期时间。
在oracle中使用to_date and this Whosebug link for taking substring
Sql 函数:
CONVERT(data_type(length),expression,style)
你可以试试这个:
CONVERT(datetime,@varCharDate,121)
有关更多信息,请参阅此 link
我想这就是您要找的:
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)
我有这种格式的 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))
OP 想要 mmddyy,而普通的 convert 对此不起作用:
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 行受影响)
假设所有日期时间部分始终用 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
Mar 13 2015 9:30PM
2015-03-13 21:30:00.000
如果转换对您不起作用,那么您可以使用 mid to take date, month, year etc. And then use str_to_date 以所需格式构建日期时间。
在oracle中使用to_date and this Whosebug link for taking substring
Sql 函数:
CONVERT(data_type(length),expression,style)
你可以试试这个:
CONVERT(datetime,@varCharDate,121)
有关更多信息,请参阅此 link
我想这就是您要找的:
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)