Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 将前导零添加到小于10的月份,并将4位数的年份修剪为2位数_Sql_Sql Server - Fatal编程技术网

Sql 将前导零添加到小于10的月份,并将4位数的年份修剪为2位数

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

我需要打印从表中获取的月份和字符串,并以“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 
    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:此查询不会引发该类型的错误。你一定在做些不同的事情。