如何在SQL中显示Date而不带前导零

时间:2015-12-30 17:58:26

标签: sql sql-server sql-server-2008 date-format date-formatting

是否有SQL格式从日期中删除前导零?

例如,如果日期为01/12/2015,则将其显示为1/12/201501/01/2016应显示为1/1/2016

整个日期通常包含dd/MM/yyyy HH:mm:ss。我需要在不改变其余信息的情况下删除那些冗余的前导零。

目前我使用包含以下内容的查询:

convert(varchar, dateadd(hh, " + 2 + " , o.start_time), 103)) + ' '  
left(convert(varchar, dateadd(hh, " + 2 + " , o.start_time), 108), 110)  

我正在使用SQL Server 2008

3 个答案:

答案 0 :(得分:2)

不确定为什么要这样做。这是一种方式。

  • 使用DAYMONTH内置的date函数提取daymonth 来自date
  • 该功能的返回类型均为INT,这将删除不需要的前导零
  • 然后将值连接起来以形成date

尝试这样的事情

declare @date datetime = '01/01/2016'

select cast(day(@date) as varchar(2))+'/'+cast(month(@date) as varchar(2))+'/'+cast(year(@date) as varchar(4))

结果: 2016年1月1日

注意:始终希望将date存储在date 数据类型

答案 1 :(得分:2)

一种方法是在日期和年份使用datename()

select cast(month(o.start_time) as varchar(255)) + '/' + datename(day, o.start_time) + '/' + datename(year, o.start_time)

另一种方法使用replace()

select replace(replace(replace('@month/@day/@year', '@month', month(o.start_time)
                              ), '@day', day(o.start_time)
                      ), '@year', year(o.start_time)
              )

就个人而言,我认为没有用。我总是以YYYY-MM-DD格式投放日子。

答案 2 :(得分:2)

试试这个,格式是一个更清洁的解决方案:

declare @date datetime = '01/01/2016'    
SELECT FORMAT(@date,'M/d/yyyy')

结果: 2016年1月1日