4

SSIS を使用して、Excel 2003 のスプレッドシートから SQL Server 2005 に日付の列をインポートしようとしています。私は英国にいるので、日付を dd/MM/yyyy の形式にしたいです。

残念ながら、スプレッドシートの列には、dd/MM/yyyy の文字列として格納された日付 (Excel の「General」形式) と、Excel の「Date」形式の dd/MM/yyyy (ロケールが「English (」) の日付) が混在しています。イギリス)')。

これはまさにその通りであり、ユーザーが自分でこれを解決できるとは期待できません。

スプレッドシートを見ると、すべての日付が視覚的に正しく表示されます。つまり、dd/MM/yyyy です。

データベースの保持テーブルの varchar 列に値をインポートしようとしています。次に、日時列を含む適切なテーブルにこれらの値をコピーするストアド プロシージャを実行します。

問題は、スプレッドシートに保存され、日付形式を使用する日付が MM/dd/yyyy として SQL Server にインポートされ、文字列として保存された日付が dd/MM/yyyy としてインポートされることです。接続文字列に IMEX=1 があります。

同じ varchar 列で両方の形式を使用する日付を使用すると、datetime 列に入れようとすると明らかに問題が発生するため、

SET DATEFORMAT MDY;    
SET DATEFORMAT DMY;

役に立たない。

とにかくSSISパッケージがExcelスプレッドシートの一見正しい日付をSQL ServerにMM/dd/yyyyとしてインポートする理由を知っている人はいますか?

SSIS パッケージが日付を dd/MM/yyyy としてインポートするように強制する方法はありますか?

他のアイデアはありますか?!

どうもありがとう、

アンソニー

4

2 に答える 2

5

あなた自身の質問に答えたと思います。日付形式のセルのインポートは日付として扱われ、その他は文字列として扱われます。おそらく、SQL サーバーの日付設定は MM/dd/yyyy であるため、変換されます。

SSIS パッケージにデータ変換ステップを追加して、列内のすべてを単一の形式 (日時または文字列) に変換してみませんか。次に、SQLサーバーがそれらすべてを同じ方法で処理すると確信しています。

ラージ

于 2009-06-25T11:59:59.110 に答える