Sql server 2008 删除sql server 2008中24小时时间的前导零

Sql server 2008 删除sql server 2008中24小时时间的前导零,sql-server-2008,datetime,Sql Server 2008,Datetime,我有这个密码 SELECT convert(varchar(5), getdate(), 108) 返回09:00或其他时间 我希望它返回9:00,当它是下午1:00时,我希望它返回13:00。一种不雅观但实用的方法就是使用CASE语句测试前导零的存在,如果存在,则将其删除: DECLARE @TheDate DATETIME SET @TheDate = '2015-04-14 09:30:00.000' SELECT CASE WHEN LEFT(conver

我有这个密码

SELECT convert(varchar(5), getdate(), 108)
返回09:00或其他时间


我希望它返回9:00,当它是下午1:00时,我希望它返回13:00。

一种不雅观但实用的方法就是使用CASE语句测试前导零的存在,如果存在,则将其删除:

DECLARE @TheDate DATETIME

SET @TheDate = '2015-04-14 09:30:00.000'
SELECT 
    CASE 
        WHEN LEFT(convert(varchar(5), @TheDate, 108),1) != '0' 
        THEN convert(varchar(5), @TheDate, 108)
        ELSE RIGHT(convert(varchar(5), @TheDate, 108), 4)
      END

SET @TheDate = '2015-04-14 13:00:00.000'
SELECT 
    CASE 
        WHEN LEFT(convert(varchar(5), @TheDate, 108),1) != '0' 
        THEN convert(varchar(5), @TheDate, 108)
        ELSE RIGHT(convert(varchar(5), @TheDate, 108), 4)
      END

SET @TheDate = GETDATE()
SELECT 
    CASE 
        WHEN LEFT(convert(varchar(5), @TheDate, 108),1) != '0' 
        THEN convert(varchar(5), @TheDate, 108)
        ELSE RIGHT(convert(varchar(5), @TheDate, 108), 4)
      END
稍微有趣一点,但没有任何简单的借口(改编自):

DECLARE @TheDate DATETIME

SET @TheDate = '2015-04-14 09:30:00.000'
SELECT substring(convert(varchar(5), @TheDate, 108), patindex('%[^0]%',convert(varchar(5), @TheDate, 108)), 10) 

SET @TheDate = '2015-04-14 13:00:00.000'
SELECT substring(convert(varchar(5), @TheDate, 108), patindex('%[^0]%',convert(varchar(5), @TheDate, 108)), 10)

SET @TheDate = GETDATE()
SELECT substring(convert(varchar(5), @TheDate, 108), patindex('%[^0]%',convert(varchar(5), @TheDate, 108)), 10)