2012-04-05 15 views
4

私は常にSQL Serverの日付形式が直感的であると判断しました。私はすでに唯一の答えが変換と文字列関数のスルーを使用することですが、私は念のために尋ねると思っていたことを私はすでに確信しています。あなたはSQL Serverが見えるようにdatetimeをフォーマットしてもらうにはどうすればよいSQL Server形式の日付を '%Y-%m-%d%I:%M%P'/'2012-04-05 11:56 am'

%Y-%m-%d %I:%M%P or '2012-04-05 11:56am' 

私の現在のアプローチはSELECT CONVERT(VARCHAR(19), GETDATE(), 120)でデータを引き戻すし、コード内のサーバー/クライアント側のループが含まれます。これは、データをCSVにエクスポートすると、効率が悪くなる場合があります。

+6

の代わりに 'varchar型を返す(にあなたのSQL Serverインスタンスをアップグレードしない限り、本当の答えは、 "あなたがいない" だと思います19) '' date'を返さずにクライアントコードに書式化させてみましょう –

+2

UNIXのタイムスタンプを簡単に返すことができ、コードで書式設定を行うことができます。私の質問は、具体的にどのようにフォーマットを行うためにデータベースを活用できるかについてです。これは、大規模なCSVダンプや、フォーマットに対する唯一の制御が使用されるSQLである他のアプリケーションとのインタフェースなど、いくつかのシナリオでは好まれます。 – ficuscr

答えて

2
select 
    cast(datepart(YYYY, GETDATE()) as varchar) + '-' + 
    right('0' + cast(datepart(MM, GETDATE()) as varchar), 2) + '-' + 
    right('0' + cast(datepart(DD, GETDATE()) as varchar), 2) + ' ' + 
    LTRIM(RIGHT(cast(GETDATE() AS varchar), 8)) 
+0

ああ、今は気分が悪く、誰にポイントを与えるかわからない。私はMSSQLに対して暴言をするためにSOを使うべきではありません。 – ficuscr

+1

私は誰がポイントを得ても気にしません。あなたに役立つものをアップしてください。 – Kevin

+0

@ficuscr:そうですね、これはあなたが「変換と文字列関数のスルー」という意味のアプローチの1つだと思っていました。この回答または他の回答がより良い回答であれば、間違いなくそれを受け入れてください(私の代わりに!)。 –

2
DECLARE @d AS datetime; 
SET @d = '2012-04-04 16:43:00' 
SELECT LEFT(CONVERT(VARCHAR, @d, 120), 11) 
     + RIGHT('0' + LTRIM(SUBSTRING(CONVERT(VARCHAR, @d, 131), 12, 5)), 5) 
     + LOWER(RIGHT(CONVERT(VARCHAR, @d, 131), 2)) 
--2012-04-04 04:43pm 
関連する問題