将字符串转换为Datetime2

时间:2016-08-09 04:42:38

标签: sql-server tsql datetime

我正在尝试转换

@string='25/05/2016 09:00' 

2016-05-25 09:00

@string@string2='25/05/2016'@string3='09:00'

的串联

当我尝试使用

执行此操作时
CONVERT(datetime, '25/05/2016 09:00') 

我收到以下错误

  

将varchar数据类型转换为日期时间数据类型会导致超出范围的值。

请帮助,谢谢。

3 个答案:

答案 0 :(得分:6)

试试这个:

SELECT CONVERT(datetime2, '25/05/2016 09:00', 103) 

convert方法有3个参数:第一个是目标数据类型,第二个是要转换的表达式,第三个是样式。在这种情况下,103代表英国或法国日期格式,即dd/mm/yyyy

Declare @string char(10)='25/05/2016'
Declare @string2 char(5)='09:00'

SELECT CONVERT(datetime2, @string + ' ' + @string2, 103) 

结果:2016-05-25 09:00:00.0000000datetime2

答案 1 :(得分:0)

感谢marc_s以我的查询格式正确。

我试过这个并得到了预期的结果,请告知是否有其他最佳方式,谢谢

`Declare @string varchar(20)='25/05/2016'
 Declare @string2 varchar(20)='09:00'
 Declare @string3 Varchar(20)=(SELECT Right(@string,4)+'-'+SUBSTRING(@string,4,2)+'-'+LEFT(@string,2)+' '+@string2)
 Select CONVERT(datetime,@string3) as _datetime`

答案 2 :(得分:0)

在转换

之前添加此语句
SET DATEFORMAT DMY

所以查询看起来像这样

SET DATEFORMAT DMY

SELECT CONVERT(datetime, '25/05/2016 09:00')