EDIT:OlegとGordonによるソリューションをチェックしてください。私は実際にそれらを私自身のものに(どちらかといえば畳んでいるので)好む。あなたがから文字を削除することができます
'19 Jul 2017 16:23:38'
これに
あなたはこのからあなたの日付フォーマットを取得する必要があり
...
'Wed, 19 Jul 2017 16:23:38 +0000'
... ...始めと終わりはLEFT
とRIGHT
です。端から最後の6を削除すると、次のようになります。
LEFT([date], LEN[date] - 6)
我々は最初の5を削除するために私たちのRIGHT()
ために同じ構文を使用できますが、[date]
は今、上から文字列全体を交換する必要があります:
-- RIGHT([date], LEN([date]) - 5) becomes...
RIGHT(LEFT(@d, LEN(@d) - 6), LEN(LEFT(@d, LEN(@d) - 6)) - 5)
すべてのすべてで、それは醜いですが、動作します:
INSERT INTO feed.article(title,link,sourceID,[date])
SELECT title,link,s.sourceID,
CONVERT(DATETIME,RIGHT(LEFT([date], LEN([date]) - 6), LEN(LEFT([date], LEN([date]) - 6)) - 5),121)
FROM feed.tempXML t
JOIN feed.[source] s ON s.sourceName = t.[source]
重要:これはあなたの日付の形式は、常に先頭の5つの不要な文字を持っていること、およびオフセットタイムゾーン(末尾の+0000
)は常に0
(ので、我々はできるだろうという仮定の下で単にそれを無視する)。
タイムゾーンオフセットを使用する値がある場合は、それを考慮する必要があります。
どのようなエラーが表示されますか? –
'LEFT'と' RIGHT'を組み合わせて 'Wed、'と '+ 0000'を削除します。 '' 1919年7月19日16:23:38 'の値は正常に変換されます。 – Santi
これを使用してこの問題を解決してください。https://docs.microsoft.com/en-us/sql/t-sql/functions/isdate-transact-sql –