我有一个列adetdate,其日期格式为'2015-05-01 00:00:00.000'
是否可以编写像
这样的案例陈述case adetdate
adetdate between '2015-05-01 00:00:00.000' and '2015-05-01 23:59:59.999' then print 'MAY 1st'
adetdate between '2015-05-02 00:00:00.000' and '2015-05-02 23:59:59.999' print 'MAY 2nd'
答案 0 :(得分:1)
如果正确理解。您可以将DATETIME
列转换为DATE
,在这种情况下,时间将被忽略。类似的东西:
PRINT CASE CAST(adetdate AS DATE)
WHEN '2015-05-01' THEN 'MAY 1'
WHEN '2015-05-02' THEN 'MAY 2'
--........
END AS Something
另一种更有活力的方法是在下面使用CONVERT
:
declare @datetime datetime = '2015-05-01 00:00:00.000'
select upper(convert(varchar(6), @datetime, 7))
<强>输出强>
将采用以下格式:
MAY 01
答案 1 :(得分:0)
也许是这样的通用方法:
SET LANGUAGE English
DECLARE @d DATETIME=GETDATE();
SELECT FORMAT(@d,'MMM d') + CASE DAY(@d)
WHEN 1 THEN 'st'
WHEN 2 THEN 'nd'
WHEN 3 THEN 'rd'
ELSE 'th' END
如果您使用的是SQL Server&lt; 2012,您可能会发现这有用:
DECLARE @d DATETIME=GETDATE();
SELECT UPPER(DATENAME(MONTH,@d)) + ' ' + CAST(DAY(@d) AS VARCHAR(2))
+ CASE DAY(@d)
WHEN 1 THEN 'st'
WHEN 2 THEN 'nd'
WHEN 3 THEN 'rd'
ELSE 'th' END