0
set dateformat dmy
select isdate('31/1/2012')

Windows コントロール パネルで数値、日付、時刻の形式を変更することで、SQL でDATEFORMAT DMYを設定する必要がなくなると思いましたか?

だから私は変更を加え、setステートメントを省略しましたが、isdateはまだ失敗しています.何が欠けていますか?

4

4 に答える 4

1

TRY_PARSESQL Server 2012では、カルチャを使用および指定できます(例en-gb)。あなたはTRY_PARSEここについて読むことができます:

http://msdn.microsoft.com/en-us/library/hh213126(v=sql.110).aspx

もちろん、そもそも明確な日付形式を使用し、文化のナンセンスをすべて回避する方がはるかに安全です。アプリケーションにデータベースが表示される前にユーザーエントリを変換させることも、文字列入力を完全に回避することもできます。カレンダーコントロールまたはドロップダウンを使用するYYYYMMDDと、地域、言語、日付形式の設定を気にすることなく、安全な形式を指定できます。すべてのユーザーが入力していることを信頼することを心に留めてd/m/yくださいm/d/y

于 2012-04-07T10:28:51.173 に答える
1

通常、SQL Server はSystemユーザー アカウントまたはで実行されますNETWORKSERVICE。これらは、インストール時に地域設定を取得します。

したがって、SQL Server の地域設定を変更するには、SQL Server サービスで使用されるユーザー アカウントの地域設定を変更する必要があります。

この記事で説明されている手順に従って、これを変更できます。

(私はこれをテストしたことはありませんが、理論的には動作するはずです。)

于 2012-04-06T15:05:48.773 に答える
1

これを試して。

SELECT CONVERT(VARCHAR(10),GetDate(),111)

これ111が日付形式です。要件に合わせて変更できます。

于 2012-04-06T14:46:04.390 に答える
0

SQLは、サーバーの設定に関係なく、データベースの日時を処理します。日時のような形式の文字列があり、それを変換したい場合は、CAST()またはCONVERT()を使用してこれを行うことができます。しかし、あなたは常にしなければなりません。

http://msdn.microsoft.com/en-us/library/ms187928.aspxを参照してください

良い情報はhttp://karaszi.com/the-ultimate-guide-to-the-datetime-datatypesでもあります

あなたの場合

select isdate('31/1/2012')

動作するはずです。では、実行するとどのようなエラーが発生しますか?

編集:これを試しました:

SELECT DATEPART(m,CAST('1/31/2012' AS datetime))

SELECT DATEPART(m,CONVERT(datetime, '31/1/2012', 103))

私が期待したように常に私に月として1を与えます。

于 2012-04-06T14:53:45.577 に答える