用最后4位数字表示日期

时间:2011-07-15 00:33:52

标签: sql sql-server tsql

我有一个问题

我们可以使用sql(SQL服务器数据库)将日期20-06-2011(dd-mm-yyyy)转换为0611吗?

我们可以在下面计算ID 请记住代表日期的最后4位数字(最后4位代表MMYY格式的日期)所以最后4位数字0611的数字应为3

计数的SQl查询是什么?

ID

AOB2340511
AOB4560511
AOB3500611
AOB4410611
AOB5120611
AOB1250411

2 个答案:

答案 0 :(得分:0)

编辑:更正了DATE数据类型选项。

如果您的日期字段是DATE数据类型,则可以执行以下操作。

SELECT RIGHT('0' + CAST(DATEPART(MM, @TheDate) as VARCHAR), 2)
    + RIGHT(CAST(DATEPART(YY, @TheDate) as VARCHAR), 2)

如果您的日期字段存储为字符串类型,例如VARCHAR,NVARCHAR等,请尝试以下

select SUBSTRING(TheDate, 4, 2) + SUBSTRING(TheDate, 9, 2)

关于计数的问题,你可以试试这个

SELECT RIGHT(ID, 4) AS TheDate, Count(*) AS TheCount
FROM MyTable
GROUP BY RIGHT(ID, 4)

如果您需要查询同时显示ID值的计数,请尝试尝试

SELECT ID, RIGHT(ID, 4) as MMYY,
    COUNT(*) OVER (PARTITION BY RIGHT(ID, 4)) AS TheGroupCount
FROM MyTable
ORDER BY ID

答案 1 :(得分:0)

这会给你“YYMM”:

SELECT SUBSTRING(CONVERT(VARCHAR,getdate(),12),1,4)

要获得您需要的2位数年份前的2位数月份:

SELECT SUBSTRING(CONVERT(VARCHAR,getdate(),12),3,2)+ SUBSTRING(CONVERT(VARCHAR,getdate(),12),1,2)

getdate()只是当前的日期戳;用你要重新格式化的日期字段替换它。 CONVERT(...,12)为您提供YYMMDD日期戳。请参阅此有用的页面,了解更多魔术数字作为第三个参数:http://sql.dzone.com/news/custom-date-formatting-sql-ser

(BTW,使用DATEPART(MM,getdate())给出一个1位数的月份而不是2位数,而DATEPART(YY,getdate())给出4位数的年份,而不是2位数。即DATEPART方法似乎注定)