首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在小于10的月份中添加前导零,并将4位年份修剪为2位

在小于10的月份中添加前导零,并将4位年份修剪为2位
EN

Stack Overflow用户
提问于 2020-12-08 01:22:11
回答 2查看 275关注 0票数 0

我需要打印操纵月份和字符串,我从一个表格中取出,并以类似'12/20','11/20',09/20的格式显示

为此,我需要将年份的最后两位数字和前导零修剪为小于10的月份。

代码语言:javascript
复制
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’

EN

回答 2

Stack Overflow用户

发布于 2020-12-08 01:24:04

您可以使用format()

代码语言:javascript
复制
select format(O.AddDate, 'MM/yy') as timestamp
from [Order] o
group by format(O.AddDate, 'MM/yy')

显然,这并不是整个查询;否则,如果在select子句中没有聚合函数,则可以使用select distinct而不是group by

票数 1
EN

Stack Overflow用户

发布于 2020-12-08 02:18:32

IMHO格式化日期是一个表示层问题。SQL Server应提供数据,表示层应根据需要向用户显示数据。因此,我将像这样编写查询:

代码语言:javascript
复制
SELECT DISTINCT
    YEAR(O.AddDate) AS AddDateYear, MONTH(O.AddDate) AS AddDateMonth
FROM 
    [Order] O
WHERE 
    O.CountryCode = 9009

或者像这样:

代码语言:javascript
复制
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)

但是,如果您坚持按照请求格式化日期,则查询如下:

代码语言:javascript
复制
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
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65186369

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档