我在 SQL Server 2005 表中有一个日期时间字段,其值如下:
2012-04-23 09:00:00.000
2012-04-23 14:00:00.000
分钟、秒和微秒始终为零。
我需要像这样显示一个“时间段”(基本上是时间加一小时):
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 中做到这一点。
有没有更清洁的方法来做到这一点?