2012-01-24 8 views
1

DateTime列のSQL Server 2008テーブルを24時間形式に変換したいとします。得SQL Serverのdatetime列から24h形式への変換が失敗する

select CONVERT(datetime, GetDate(), 121) 

2012-01-24 15:22:27.340 

パーフェクトを

標準的なガイダンスは、の線に沿って何かを使用することです。

select top(5) CONVERT(datetime, LogTable.Timestamp, 121) from LogTable 
order by LogTable.Id DESC 

そして、我々が得る::オクラホマので、この知識を適用すること、のはCONVERT発現させるためのコラムでGetDate()に代わっ

2012-01-24 03:25:47.933 
2012-01-24 03:25:46.917 
2012-01-24 03:25:46.547 
2012-01-24 03:25:46.543 
2012-01-24 03:25:46.543 

は私が間違って何をしているのですか? CONVERTGetDate()関数の出力ではなくカラムで処理するには、どのように式を作成する必要がありますか?

+1

どうしたの?あなたのアウトプットが予期せず上記の理由 –

+0

LogTable.Timestampの実際のデータは何ですか?これはVarChar(またはnvarchar)列ですか、それとも既にDateTimeですか? – AllenG

+2

LogTable.Timestampのデータは実際に午前3時ではありませんか? –

答えて

1

私はこの問題の解決方法を見つけることができました。SQLテーブルへのタイムスタンプの書き込みサービスは、不適切な書式設定によって、フィールドに「裸の」日時を書き込んで、いつ午前彼らは到着した。

フィールドに24時間のデータを書き込むためにソースコードを書き直すことができましたが、現在は期待どおりに動作しています。私は直感が正しかったことを知って安心しています。それはソースである間違ったサービスでした。

皆様のおかげで、ご提案とご指導をいただきありがとうございます。とても感謝しております。

1

24時間形式は文字列のためにのみ重要です。使用する場合:

convert(datetime, ... 

datetimeに変換しています。 24時間を表示するには、あなたが同じように、文字列に変換する必要があります:あなたはvarchar列で始まる場合

convert(varchar(24), ... 

、あなたは24時間形式で表示するには、varchar型に戻っ日時にそれをconvertとすることができます。例えば、AM/PMのvarchar型に変換するには、24時間でそれを表示します。ここでは

select convert(varchar(16), convert(datetime, 'sep 01 2011 01:23PM', 100), 120) 

は、スタイル100は、解析に使用されます。スタイル120は書式設定に使用されます。

+0

私は理解しています。ただし、24時間形式が文字列にのみ適用される場合、なぜCONVERT(datetime、GetDate()、121)は24時間形式の日付になりますか? –

+0

クライアントはおそらく24時間の日付を表示するように設定されています。 'select getdate()'は24時間の日付も表示しますか? – Andomar

関連する問題