获取当月的 2 位数字

问题描述 投票:0回答:13

我有一个整数列“月” 我想要获得月份的 2 位数字。

这是我尝试过的:DATEPART(mm, @Date)

它返回一月到九月月份的一位数 我正在使用 SQL Server 2008

有人有建议吗?

sql sql-server sql-server-2008 t-sql
13个回答
111
投票

功能

FORMAT(date,'MM') 

将用两位数完成工作。


90
投票

有不同的方法

  • 使用RTRIM并指定范围

喜欢

SELECT RIGHT('0' + RTRIM(MONTH('12-31-2012')), 2); 
  • 将日期转换为文本后,使用Substring提取月份部分

喜欢

SELECT SUBSTRING(CONVERT(nvarchar(6),getdate(), 112),5,2)

参见小提琴

可能还有其他方法可以得到这个。


18
投票

Pinal Dave 有一篇很好的文章,其中包含一些有关如何将尾随 0 添加到 SQL 数字的示例。

一种方法是使用

RIGHT
函数,这将使语句类似于以下内容:

SELECT RIGHT('00' + CAST(DATEPART(mm, @date) AS varchar(2)), 2)

12
投票

另一个简单的技巧:

SELECT CONVERT(char(2), cast('2015-01-01' as datetime), 101) -- month with 2 digits
SELECT CONVERT(char(6), cast('2015-01-01' as datetime), 112) -- year (yyyy) and month (mm)

输出:

01
201501

6
投票

CONVERT(char(2), getdate(), 101)


4
投票

首先将其转换为 varchar,检查该值是否在 1 到 9 之间,从而在其前面附加 0

select case when DATEPART(month, getdate()) between 1 and 9 
then '0' else '' end + cast(DATEPART(month, getdate()) as varchar(2))

3
投票

替代

DATEPART

SELECT LEFT(CONVERT(CHAR(20), GETDATE(), 101), 2)

2
投票

对我来说最快的解决方案是

DATE_FORMAT(CURDATE(),'%m')

2
投票

简单易用:

SELECT RIGHT('0' + CAST(MONTH(@Date) AS NVARCHAR(2)), 2)

1
投票

尝试:

select right ('0'+convert(nvarchar(2), DATEPART(mm, getdate())),2 )

0
投票

我的做法是:

right('0'+right(datepart(month,[StartDate]),2),2)

内部“right”函数的原因是为了防止 SQL 将其作为数学加法来执行 - 这将再次给我们留下一位数字。


0
投票
SELECT REPLACE(CONVERT(varchar, MONTH(GetDate()) * 0.01), '0.', '')

0
投票

尝试这个命令 -SELECT FORMAT(MONTH(CAST(GETDATE() AS DATE)), '00') AS MonthNumberFormatted; 它将把月份数字格式化为 2 位数字格式

© www.soinside.com 2019 - 2024. All rights reserved.