select convert(varchar(5),getdate(), 100)
如果运行上面的查询,结果是'Jun 1',因此月份的前三个字母、一个空格和日期的第一个数字。但是如果我将getdate()函数替换为硬编码的值,比如下面的查询,结果会发生很大的变化。
select convert(varchar(5), '2018-05-01 00:00:00.000', 100)
如果结果必须是月份的前三个字符和两位数的日期,并且没有空格,那么如何编写查询
发布于 2018-06-15 03:04:24
尝尝这个
DECLARE @date DATE;
set @date = '2018-05-01 00:00:00.000';
select convert(varchar(6),@date, 100);
发布于 2018-06-15 03:12:39
在format()
之前,有datename()
。这应该是您想要的结果:
select left(datename(month, getdate()), 3) + right('00' + datename(day, getdate()), 2)
您也可以使用您的方法,但需要替换空格:
select replace(replace(convert(varchar(6), cast('2018-05-01 00:00:00.000' as date), 100), ' ', '0'), ' ', '0')
发布于 2018-06-15 02:54:52
这是因为您正在传递varchar
或string
类型的date '2018-05-01 00:00:00.000'
,如下所示:
select left('2018-05-01 00:00:00.000', 5)
如果您想要相同结果,则需要将它们转换为合理的格式
select convert(varchar(6),cast('2018-06-01' as date), 100)
我读错了最后一行,如果你不想要空格,那就简单地使用replace()
select replace(replace(convert(varchar(6), cast('2018-06-01' as date), 100), ' ', '0'), ' ', '0')
https://stackoverflow.com/questions/50864086
复制相似问题