SQL Server 2005テーブルに、次のような値を持つ日時フィールドがあります。
2012-04-23 09:00:00.000
2012-04-23 14:00:00.000
分、秒、およびマイクロ秒は常にゼロです。
次のような「タイムスロット」(基本的には時間プラス1時間)を表示する必要があります。
2012/04/23 09:00 AM - 10:00 AM
2012/04/23 02:00 PM - 03:00 PM
私はこれを使って必要なものを手に入れました:
SELECT SUBSTRING(CONVERT(VARCHAR, TimeSlot, 20), 1, 10) + ' ' +
RIGHT('00000' + LTRIM(SUBSTRING(CONVERT(VARCHAR(24), TimeSlot, 109), 13, 5)), 5) + ' ' +
SUBSTRING(CONVERT(VARCHAR(19), TimeSlot, 100),18,2) + ' - ' +
RIGHT('00000' + LTRIM(SUBSTRING(CONVERT(VARCHAR(24), DATEADD(hh, 1, TimeSlot), 109), 13, 5)), 5) + ' ' +
SUBSTRING(CONVERT(VARCHAR(19), DATEADD(hh, 1, TimeSlot), 100), 18, 2) AS TimeSlot
FROM MyTable
動作しますが、とても汚れています。
コード(VB .NET)で簡単に実行できることはわかっていますが、SQLで実行する必要があると想定しています。
これを行うためのよりクリーンな方法はありますか?