2012-10-06 6 views
11

を引くフィールドのデフォルトから2012年10月6日02:29:AM/PMする37.243フォーマットので、私はSQLコンバート日時と私は日時(CREATETIME)を変換しようとしている時間

convert(varchar, CreateTime, 100) as CreateTime 

とgetを使いますOct 6 2012 4:29 AM

これまでのところとても良いですが、同じステートメントで4時間を引いてフィールドを表示したい(GMTの問題)。

私はここにいくつかの投稿を行ってきましたが、1つのステートメントでそれを行うことができるものは見つかりませんでした。

答えて

21
declare @createTime datetime = '2012-10-06 02:29:37.243'; 

-- original value, default formatting 
select @createTime; 

-- formatted 
select convert(varchar, @createTime, 100); 

-- subtract 4 hours, formatted 
select convert(varchar, dateadd(hour, -4, @createTime), 100); 

dateaddを使用する上記のクエリは、常に4時間を減算します。任意の日時をUTCから現地時間に変換することが目標である場合は、追加/減算する必要のあるオフセットが元の日時に依存するため、より複雑になります。 -4のような単一の値が常に機能するとは限りません。日減算したい人と時間については

Effectively Converting dates between UTC and Local (ie. PST) time in SQL 2005

+0

おかげで、選択変換(varchar型、DATEADD(時間、-4、@:ここではいくつかの一般的なケースに対処するためのアイデアがありますcreateTime)、100);トリックをやった – bobsingh1

-1

SQLサーバーのためには、別のtimeszoneに変換するために、MySQLの使用のためにdatetimeoffset

CONVERT_TZ機能を使用することができます。

0

declare @createTime datetime = '2012-10-06 02:29:37.243'; 
select @createtime as originaltime, dateadd(day, -4, dateadd(hour,-1,@createtime))as minus4daysandhour