通过sql select语句创建'Date Code'

时间:2017-09-06 17:22:16

标签: sql sql-server tsql

我为我制作的部分使用日期代码,格式如下:

7249

必须是4位数。第一个数字'7'是当前年份的最后一位数字。接下来的数字是自今年第一年以来的日子。所以今天是今年第一天的9/6,249天 - '249'。

我正在尝试编写一个sql语句来自动创建这个'日期代码'

到目前为止,我有这个

SELECT CONCAT(RIGHT(YEAR(GETDATE()), 1),
             (
                 SELECT(DATEDIFF(dd, '12/31/2016', GETDATE()))
             ));

但是,如果日期从一年的第一天开始少于100天,则不会填写任何零。例如,在1月2日,这将产生72,而不是7002。

请告知如何在需要时添加中间零。

感谢

2 个答案:

答案 0 :(得分:1)

您可以使用DatePart(DAYOFYEAR,date)

示例

Declare @D date= '2017-01-02'

Select right(year(@D),1)+right('000'+DateName(DAYOFYEAR,@D),3)

<强>返回

<强> 7002

或者因为你在2012 +

Select right(year(@D),1)+format(DatePart(DAYOFYEAR,@D),'000')

答案 1 :(得分:0)

你可以这样使用right('00'+doy,3)

select concat(right(year(getdate()),1)
  ,right('00'+datename(DayOfYear,'20170102'),3))

rextester演示:http://rextester.com/LQSR86847

返回7002