Sql 将前导零添加到小于10的月份,并将4位数的年份修剪为2位数
我需要打印从表中获取的月份和字符串,并以“12/20”、“11/20”、“09/20”等格式显示 为此,我需要将年份的最后2位数字和前导的0位数字修剪为小于10的月份Sql 将前导零添加到小于10的月份,并将4位数的年份修剪为2位数,sql,sql-server,Sql,Sql Server,我需要打印从表中获取的月份和字符串,并以“12/20”、“11/20”、“09/20”等格式显示 为此,我需要将年份的最后2位数字和前导的0位数字修剪为小于10的月份 SELECT CAST(MONTH(O.AddDate) AS VARCHAR(2)) + '/' + CAST(YEAR(O.AddDate) AS VARCHAR(4)) AS TimeStamp FROM [Order] O WHERE O.CountryCode = 9009 GROUP BY
SELECT
CAST(MONTH(O.AddDate) AS VARCHAR(2)) + '/' + CAST(YEAR(O.AddDate) AS VARCHAR(4)) AS TimeStamp
FROM
[Order] O
WHERE
O.CountryCode = 9009
GROUP BY
CAST(MONTH(O.AddDate) AS VARCHAR(2)) + '/' + CAST(YEAR(O.AddDate) AS VARCHAR(4))
这提供了格式为“10/2020”、“8/2020”的输出,但我要求它类似于“08/20”、“10/20”您可以使用格式()
:
显然,这不是你的全部疑问;否则,如果在
select
子句中没有聚合功能,则可以使用select distinct
而不是groupby
SELECT DISTINCT
YEAR(O.AddDate) AS AddDateYear, MONTH(O.AddDate) AS AddDateMonth
FROM
[Order] O
WHERE
O.CountryCode = 9009
SELECT
YEAR(O.AddDate) AS AddDateYear, MONTH(O.AddDate) AS AddDateMonth
FROM
[Order] O
WHERE
O.CountryCode = 9009
GROUP BY
YEAR(O.AddDate), MONTH(O.AddDate)
或者像这样:
SELECT DISTINCT
YEAR(O.AddDate) AS AddDateYear, MONTH(O.AddDate) AS AddDateMonth
FROM
[Order] O
WHERE
O.CountryCode = 9009
SELECT
YEAR(O.AddDate) AS AddDateYear, MONTH(O.AddDate) AS AddDateMonth
FROM
[Order] O
WHERE
O.CountryCode = 9009
GROUP BY
YEAR(O.AddDate), MONTH(O.AddDate)
但是,如果您坚持按要求格式化日期,则查询如下:
SELECT
RIGHT('0' + CAST(T.AddDateMonth AS varchar(2)), 2) + '/'
+ RIGHT(CAST(T.AddDateYear) AS varchar(4), 2) AS Y2kVulnerableTimestamp
FROM
(
SELECT DISTINCT
YEAR(O.AddDate) AS AddDateYear, MONTH(O.AddDate) AS AddDateMonth
FROM
[Order] O
WHERE
O.CountryCode = 9009
) T
在劳埃德和苏格兰皇家银行因为这个原因崩溃的那一年,你又重新引入了千年虫。至少,每个程序员都应该知道如何使用模运算。在这里,您还可以应用正确的函数来获取最后2个字符(尽管这是不明智的)。直接在sql中格式化列是个坏主意。因此,数据库无法重放。但对于bi或sql报告,这是可以的,您可以简单地使用字符串函数和日期函数。2位年份。劳埃德和苏格兰皇家银行因此在一月份倒闭。我真的,真的,真的不喜欢这个我在我的select子句中有聚合,格式给出了聚合和分组的错误clause@Jazz:此查询不会引发该类型的错误。你一定在做些不同的事情。