2016-07-05 19 views
0

convert(datetime,'2015-03-06T23:59:04Z',127)产生一个MS-SQL日期时间:计算列说明书中对ISO8601日期转换与时区Z到SQL日期时间

2015年3月6日23:59:04.000

如果我们有所谓的实际柱[ isodate]定义为varchar(20)或char(20),是否有可能使用该转换作为SQL Server 2012中的计算列规范的公式?

我收到“错误验证公式”与eithe这些公式:

(convert([datetime],[isodate],127))
(convert(datetime,[isodate],127))

+0

删除[datetime]周围的括号,不应该这样吗? – scsimon

回答

1

看起来你只是有一个语法错误。从公式中删除[datetime]的括号应该能够解决问题。

if object_id('tempdb..#temp') is not null drop table #temp 

create table #temp (isodate varchar(20)) 

insert into #temp (isodate) values 
('2015-03-06T23:59:04Z'), 
('2016-03-04T13:59:04Z') 

select isodate, convert(datetime,[isodate],127) as DT from #temp 

--select convert(datetime,'2015-03-06T23:59:04Z',127) 
+0

我希望这很简单。在删除括号后,该公式仍然作为有效的计算列规范公式被拒绝。 – Tim

+0

看起来像一个微不足道的问题,但你确定[isodate]中的所有值都可以转换吗?即没有任何损坏的数据?可以肯定的是,[isodate]本身并不是一个计算列(在它存在的任何阶段)吗?我只注意到了额外的括号,所以假设它嵌套在其他语句中。 – scsimon

+0

删除包装圆括号的窍门。 – Tim