8

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 に従っていません。入力文字列を変更するか、別のスタイルを使用してください。

[styles]私の場合、CAST と CONVERT (Transact-SQL) のいずれも機能していません。

アドバイスやヘルプをいただければ幸いです。

解決済み:

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

3 に答える 3

6

私が知る限り、スタイルはありません。103 ( British/French ) は動作するはずです - いいえ?

DECLARE @input NVARCHAR(255)

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

SELECT CONVERT(DATETIME, @input, 103)

次の出力が得られます。

2000-08-18 14:48:15.000

これはかなり合理的ですよね??

于 2012-10-29T15:49:53.740 に答える
6

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

UPDATE myTable
SET columnName = CONVERT(NVARCHAR(255),CONVERT(SMALLDATETIME, columnName,105))
ALTER TABLE myTable
ALTER COLUMN columnName SMALLDATETIME
于 2012-10-29T17:41:38.140 に答える
4

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 で正常に動作するようです)

于 2012-10-29T15:50:29.460 に答える