0

キャストに失敗しましたが、その理由がわかりません。

失敗しているものは次のとおりです。

select cast('16/04/2012' as datetime)

エラーは次のとおりです。

「char データ型を datetime データ型に変換すると、datetime 値が範囲外になりました。」

for 形式で使用するCONVERTと、103期待どおりに問題なく動作します。

サーバーは英国の日付形式に設定されているため、MSSQL アカウントも英国の形式にデフォルト設定されている必要があります。再起動されたので、サービスが別の日付形式を使用しているはずはありません。

これは SQL2005 インスタンスです。

私が本当に知りたいのは、CAST が失敗する原因は何ですか?

4

6 に答える 6

1

次のコードを使用します。

SELECT convert(datetime, '16/04/2012',105)
于 2013-04-09T13:25:50.170 に答える
0

MM:dd:YY のデータ形式があり、キャストは 'dd/MM/yy' である '16/04/2012' を変換しようとし、16 は 12 か月未満であるため例外をスローします。

サーバー設定でデータ形式を変更するか、クエリの前にSET DATEFORMATステートメントを 使用できます

于 2013-04-09T13:03:09.170 に答える
0

日付形式と日時形式は必ずしも同じではありません。hh:mm:ss の 00:00:00 を暗黙的に追加する場合がありますが、それを追加してみてください。タイプ 103 には dd/mm/yyyy のみが含まれているため、もちろん機能します。

于 2013-04-09T13:02:47.977 に答える
0

サーバーが英国の言語形式であると確信していますか? 私が実行した場合:

set language british
select cast('16/04/2012' as datetime)

それから私は得る:

2012-04-16 00:00:00.000

現在のセッション言語を確認するには、

select @@language

セッション言語は、それが SQL Server によってプロビジョニングされたログイン (つまり、Windows ユーザーではない) であると仮定して、使用中のログインからデフォルト設定されます。特定のユーザーの言語を確認するには:

select loginproperty('myuser', 'DefaultLanguage')

新しく作成されたすべてのログインに対して永続的なサーバー変更を行うには:

EXEC sp_configure 'default language', 23
reconfigure

...ここで、23 はlangid経由で取得されsp_helplanguageます。

于 2013-04-09T13:05:53.493 に答える
0

試しましたSET DATEFORMAT DMYか?

于 2013-04-09T13:01:44.623 に答える