web-dev-qa-db-ja.com

NVARCHAR(255)をDATEに変換する

Excelを使用して古いSQL ServerデータをSQL Serverに転送しようとしています。 _Import/Export Data_アプリケーションがほとんどのデータ列を自動的にNVARCHAR(255)に設定するようです。私の問題は、私の列の1つがDATE型であると想定されていることですが、その中のすべてのデータは次のようになります_18.08.2000 14:48:15_。

したがって、このクエリを使用しようとすると:

_SELECT CONVERT(Date, DATE_TIME,  113)
FROM someTable
_

私はこのエラーを受け取ります:

メッセージ9807、レベル16、状態0、行1
入力文字列がスタイル113に従っていません。入力文字列を変更するか、別のスタイルを使用してください。

CASTおよびCONVERT(Transact-SQL) の_[styles]_が私の場合は機能しません。

アドバイスやヘルプは大歓迎です。

解決済み:

_UPDATE myTable
SET columnName = CONVERT(NVARCHAR(255),CONVERT(SMALLDATETIME, columnName,105))
ALTER TABLE myTable
ALTER COLUMN columnName SMALLDATETIME
_
6
crashtestxxx

したがって、これがだれにとっても便利になる場合、これはデータ型NVARCHARをDATETIMEに変更する正確なコードです。

UPDATE myTable
SET columnName = CONVERT(NVARCHAR(255),CONVERT(SMALLDATETIME, columnName,105))
ALTER TABLE myTable
ALTER COLUMN columnName SMALLDATETIME
4
crashtestxxx

私が知る限り、スタイルはありません。 103(イギリス/フランス語)動作するはずです-いいえ?

DECLARE @input NVARCHAR(255)

SET @input = '18.08.2000 14:48:15'

SELECT CONVERT(DATETIME, @input, 103)

次の出力を取得します。

2000-08-18 14:48:15.000

かなり合理的だと思いますか?

5
marc_s

SQL Server 2012を使用している場合は、以下を試してください。

PARSE(Date AS datetime USING 'en-GB')

または、それがうまくいかない場合は、以下を試してください。

PARSE(Date AS datetime USING 'Et-EE')

エストニアの文化は特に「。」を使用しています。日付区切り記号(d.MM.yyyy H:mm:ss)なので、動作するはずです。

(どちらもSQL Fiddleで正常に動作するようです)

3
lc.