如何在 SQL 中显示不带前导零的日期

How to present Date in SQL without leading zeros

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

如果日期是 01/12/2015,则将其显示为 1/12/2015,而 01/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

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

  • 使用DAY and MONTH内置date函数提取daymonth 来自 date.
  • 函数的 return 类型 都是 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))

结果: 1/1/2016

注意: 总是喜欢将 date 存储在 date datatype

一种方法是使用 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 格式输入日期。

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

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

结果: 2016 年 1 月 1 日