首页 > 解决方案 > Sql Query中根据DateTime自定义引用Id的序列

问题描述

是否可以编写返回 18315-0921的sql查询

结果是基于时间的

18表示 2018
315表示一年中的某一天
0921表示当前时间。

标签: c#sqlsql-serverdatetime

解决方案


declare @TDATE as datetime2 = getdate();

select    Right('0' + CAST(YEAR(@TDATE) % 100 as varchar(2)) , 2) 
       +  RIGHT('00' + CAST(DATEPART(y,@TDATE) as varchar(3)) , 3)
       +  '-'
       + REPLACE(CONVERT(varchar(5),@TDATE, 114), ':', '');

所以我通过取一年的模数 100 得到 2 位数的年份数,例如 2014 % 100 是 14

然后我将其更改为字符串,如果需要,以'0'开头

为了获得一年中的天数,我使用带有“y”的 DatePart 来表示“一年中的天数”,如果需要,最多可以填充 2 位数字。

为了获得我转换为 hh:mi:ss:mmm 的时间,但只保留前 5 个字符,然后我将替换 ':' 什么都没有


推荐阅读