2016-07-05 13 views
0

convert(datetime,'2015-03-06T23:59:04Z',127)にタイムゾーンZとISO8601の日付を変換するために、MS-SQLの日時を生み出す04.000計算列仕様はSQLのdatetime

我々はと呼ばれる実際の列を持っている場合は[ 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

関連する問題