我有一个整数列“月” 我希望每月获得2位数字。
这就是我的尝试:DATEPART(mm,@ Date)
1月到9月返回一位数 我正在使用SQL Server 2008
有人有建议吗?
答案 0 :(得分:68)
有不同的方法可以做到这一点
喜欢
SELECT RIGHT('0' + RTRIM(MONTH('12-31-2012')), 2);
像
SELECT SUBSTRING(CONVERT(nvarchar(6),getdate(), 112),5,2)
请参阅Fiddle
可能还有其他方法可以解决这个问题。
答案 1 :(得分:55)
功能
FORMAT(date,'MM')
将以两位数完成工作。
答案 2 :(得分:13)
Pinal Dave有一篇很好的文章,其中有一些关于如何add trailing 0s to SQL numbers的例子。
一种方法是使用RIGHT
函数,这将使语句类似于以下内容:
SELECT RIGHT('00' + CAST(DATEPART(mm, @date) AS varchar(2)), 2)
答案 3 :(得分:6)
另一个简单的伎俩:
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
答案 4 :(得分:3)
答案 5 :(得分:2)
通过首先将值转换为varchar
来检查值是否介于1和9之间,从而在它之前追加0select case when DATEPART(month, getdate()) between 1 and 9
then '0' else '' end + cast(DATEPART(month, getdate()) as varchar(2))
答案 6 :(得分:2)
只需使用:
SELECT RIGHT('0' + CAST(MONTH(@Date) AS NVARCHAR(2)), 2)
答案 7 :(得分:1)
尝试:
select right ('0'+convert(nvarchar(2), DATEPART(mm, getdate())),2 )
答案 8 :(得分:1)
CONVERT(char(2),getdate(),101)
答案 9 :(得分:0)
对我而言,最快的解决方案是
DATE_FORMAT(CURDATE(),'%m')
答案 10 :(得分:0)
我的做法是:
right('0'+right(datepart(month,[StartDate]),2),2)
内部“正确”功能的原因是为了防止SQL将其作为数学加法执行 - 这将使我们再次使用一位数。
答案 11 :(得分:0)
SELECT REPLACE(CONVERT(varchar, MONTH(GetDate()) * 0.01), '0.', '')