我有一个问题
我们可以使用sql(SQL服务器数据库)将日期20-06-2011(dd-mm-yyyy)转换为0611吗?
和
我们可以在下面计算ID 请记住代表日期的最后4位数字(最后4位代表MMYY格式的日期)所以最后4位数字0611的数字应为3
计数的SQl查询是什么?
ID
AOB2340511
AOB4560511
AOB3500611
AOB4410611
AOB5120611
AOB1250411
答案 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方法似乎注定)