2011-10-24 12 views
3

datetimeフィールドをYYYYMMDD形式の数値表現に変換する必要があります。 (:00:00.000 20110101に12 2011-01-01から):だから、私のロジックがここにあるdatetimeを数値表現に変換する

convert(int, replace(cast(getdate() as date), '-', '')) 

MSDN(http://msdn.microsoft.com/en-us/library/bb630352.aspx)、文字列表現が[常に?]で「YYYY-MM-DDによると、 "ので、文字列からダッシュを削除した後、その文字列を単にINTに変換します。

これは常に動作しますか?私はそれにいくつかの問題に遭遇するでしょうか?これを達成するより良い方法はありますか?

ありがとうございます。

答えて

7

このアプローチでは、ローカリゼーションの設定がどうなるか分かりません。組み込みの日時変換関数のオプション(http://msdn.microsoft.com/en-us/library/ms187928.aspx)を使用すると、置換を使用することなく、ロケールの心配がなくなります。

例:

select CAST(convert(varchar,getdate(),112) as int) 
+2

(フォーマット112は、ISO日付/時刻の形式である - 私は日付で動作する時はいつでも、私はそれを使って好みに関係なく、私や私のシステムがどこにあるの作品 - YYYYMMDD ...)だけで置き換えますあなたの日付フィールドを持つgetdate()。 112も時間を削除します。 –

+0

本当に好きです。かなりうまく動作し、短い形式です。ありがとう! –

+0

@Mike Walsh - 私はニックピッキングしていますが、convert関数に "varchar"(長さ30の暗黙の既定値)の代わりに "varchar(8)"を使用するほうが少し良いでしょう。 –

関連する問題