我有一个字符串'2016-03-05',我想转换为 datetime
。
这是我的代码:
Declare @period as nvarchar(10)
Set @period = '2016-03-05'
Select Convert(Datetime, @period, 112).
运行我会收到错误
转换从字符串转换日期时失败。
转换格式 112
您使用过的是输入'20160305'
(没有破折号作为日期零件分隔符)。
所以要么做
select convert(Datetime, '20160305', 112)
或(如果您的输入确实包含破折号,则只需将它们删除:
select convert(Datetime, replace('2016-03-05', '-', ''), 112)
那是因为您传递给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文档
SELECT LEFT(201605,4) + '-' + RIGHT(201605,2)
{OR}
SELECT RIGHT(201605,2) + '-' + LEFT(201605,4)
尝试一下,我猜是根据您的需要
来工作Declare @period as nvarchar(10)
Set @period = '2016-03-05'
select CAST(@period as datetime)