我有一个字符串' 2016-03-05'我希望转换为datetime
。
这是我的代码:
Declare @period as nvarchar(10)
Set @period = '2016-03-05'
Select Convert(Datetime, @period, 112).
运行我收到错误
从字符串转换日期时转换失败。
答案 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)