You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在T-SQL中将datetime转换为'January 2024'格式?

在T-SQL中将日期转换为"January 2024"格式并拼接文本

1. 转换为"月份全称 年份"格式

在T-SQL中,可直接使用FORMAT()函数将datetime或date类型转换为目标格式:

-- 直接转换datetime类型为"January 2024"格式
FORMAT([ProcessingDate], 'MMMM yyyy')

如果基于你已转换的date类型字段,写法一致:

FORMAT(Convert(date, [ProcessingDate]), 'MMMM yyyy')
  • MMMM:表示月份全称(如January、May)
  • yyyy:表示4位年份

2. 拼接"Current = "文本

针对最新月份(如你提到的May 2024)拼接前缀,可结合CASE条件语句实现:

SELECT 
    CASE 
        WHEN FORMAT([ProcessingDate], 'MMMM yyyy') = 'May 2024' 
        THEN 'Current = ' + FORMAT([ProcessingDate], 'MMMM yyyy')
        ELSE FORMAT([ProcessingDate], 'MMMM yyyy')
    END AS DropdownOption
FROM YourTableName

若不想硬编码最新月份,可通过子查询动态获取最大月份:

WITH MaxMonth AS (
    SELECT MAX(FORMAT([ProcessingDate], 'MMMM yyyy')) AS LatestMonth
    FROM YourTableName
)
SELECT 
    CASE 
        WHEN FORMAT(t.[ProcessingDate], 'MMMM yyyy') = mm.LatestMonth
        THEN 'Current = ' + FORMAT(t.[ProcessingDate], 'MMMM yyyy')
        ELSE FORMAT(t.[ProcessingDate], 'MMMM yyyy')
    END AS DropdownOption
FROM YourTableName t, MaxMonth mm

兼容低版本SQL Server(2012之前)

如果你的SQL Server版本低于2012,FORMAT()函数不支持,可改用DATENAME()组合实现:

-- 基础转换写法
DATENAME(month, [ProcessingDate]) + ' ' + DATENAME(year, [ProcessingDate])

对应的拼接写法:

SELECT 
    CASE 
        WHEN DATENAME(month, [ProcessingDate]) + ' ' + DATENAME(year, [ProcessingDate]) = 'May 2024'
        THEN 'Current = ' + DATENAME(month, [ProcessingDate]) + ' ' + DATENAME(year, [ProcessingDate])
        ELSE DATENAME(month, [ProcessingDate]) + ' ' + DATENAME(year, [ProcessingDate])
    END AS DropdownOption
FROM YourTableName

内容的提问来源于stack exchange,提问作者Java

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.22 05:05:57