我有这段代码
SELECT convert(varchar(5), getdate(), 108)
返回09:00,或任何时间。
我希望它返回9:00,当它是下午1点。我希望它能在13:00返回。
答案 0 :(得分:1)
一种不优雅但功能齐全的方法只是使用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
略微有趣,但没有任何简单的借口(改编自this answer):
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)