25

datetime (createTime) フィールドをデフォルトの 2012-10-06 02:29:37.243 形式から am/pm に変換しようとしているので、使用します

convert(varchar, CreateTime, 100) as CreateTime

2012 年 10 月 6 日 4:29AMを取得します。

ここまでは順調ですが、同じステートメントで 4 時間を引いてからフィールドを表示したいと思います (GMT の問題)。

ここでいくつかの投稿を確認しましたが、単一のステートメントでそれを実行できるものは見つかりませんでした。

4

3 に答える 3

39
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 のような単一の値が常に機能するとは限りません。一般的なケースに対処するためのいくつかのアイデアを次に示します。

SQL 2005 で UTC とローカル (つまり PST) 時間の間で日付を効果的に変換する

于 2012-10-06T04:59:11.900 に答える
0

SQLサーバーの場合、 datetimeoffsetを使用できます

mysqlの場合、 CONVERT_TZ関数を使用して別のタイムゾーンに変換します。

于 2012-10-06T04:55:21.870 に答える