如何在sql中将字符串YYYYMM转换为datetime?

时间:2016-06-20 08:39:27

标签: sql-server datetime

我有一个字符串' 2016-03-05'我希望转换为datetime

这是我的代码:

Declare @period as nvarchar(10)
Set @period = '2016-03-05'
Select Convert(Datetime, @period, 112).

运行我收到错误

  

从字符串转换日期时转换失败。

4 个答案:

答案 0 :(得分:3)

您使用的转化格式112假定输入为'20160305'(没有短划线作为日期部分分隔符)。

所以要么

select convert(Datetime, '20160305', 112)

或(如果您的输入确实包含破折号,则只需删除它们:

select convert(Datetime, replace('2016-03-05', '-', ''), 112)

答案 1 :(得分:1)

那是因为您传递给CONVERT函数的样式不支持该格式。你可以做两件事......

1-删除破折号

Declare @period as nvarchar(10)
Set @period = '20160305' --  I've dropped the dashes here
Select Convert(Datetime, @period, 112)

2-将样式更改为支持此格式的内容

Declare @period as nvarchar(10)
Set @period = '2016-03-05'
Select Convert(Datetime, @period, 21) -- I've changed the style here

如需完整参考,请阅读MSDN documentation

答案 2 :(得分:0)

SELECT LEFT(201605,4) + '-' + RIGHT(201605,2)
{OR} 
SELECT RIGHT(201605,2) + '-' + LEFT(201605,4)

答案 3 :(得分:0)

试试这个它会起作用我想根据你的需要

Declare @period as nvarchar(10)
Set @period = '2016-03-05'
select CAST(@period as datetime)