2016-11-02 13 views
1

私は軍事的な標準を変換しています。変数を気にしないでください。時間自体は、ユーザから来ている)ミリタリーからスタンダードへの変換(時間と午前/午後の間のスペースを追加)

DECLARE @StartTime TIME(0) = @EncTime; 
DECLARE @MinutesToAdd INT = CONVERT(VARCHAR(10), @Minutes) 
DECLARE @SetEndTime VARCHAR(10) = (SELECT DATEADD(Minute, @MinutesToAdd, @StartTime) AS EndTime) 

SET @Converted = (SELECT CONVERT(VARCHAR, DATEADD(Minute, @MinutesToAdd, @StartTime), 100) AS EndTime) 
+4

あなただけの「ユーザからの入力を」変換している場合は、なぜそれがSQLでいますか?実際にはどのアプリケーション言語でも簡単にこれを行うことができます。 SQLは(あなたが見ることができるように)タスクに適していません。 – Bohemian

+0

あなたが作業している文字列の形式を表示すると役に立ちます。 –

+0

「軍事的から標準的」という意味の実例を教えてください。 「20:09」から「8:09 PM」のように? – Schwern

答えて

0

をあなたはFORMAT()関数を使用することができますSQL Server 2012の以降を使用している場合。あなたの最後の行は次のようになります。

select format(cast(DATEADD(Minute, @MinutesToAdd, @StartTime) as datetime), 'hh\:mm tt') 

MSDNの参照:https://msdn.microsoft.com/en-us/library/hh213505.aspx

+1

['FORMAT()'は絶対的な犬です、パフォーマンスが良い](https://sqlperformance.com/2015/06/t-sql-queries/format-is-nice-and-all-but) 。これがプレゼンテーション層の場合は、プレゼンテーション言語で '.format()'を実行してみませんか? –

+0

これは絶対的な犬でもかまいませんが、サンプルクエリで示唆されているように、入力に基づいて値を設定するために使用されているのであれば、本質的には0msの操作です。私はプレゼンテーションロジックbtwのようなことをすることに同意します。ちょうどOPによって供給されたものの外に出ます。 –

+0

この場合はFORMATを使用しますが、パフォーマンスが重要な場合は他の方法を使用しますか?私は一貫性が好きです。 YMMV。 –

関連する問題