DECLARE @day CHAR(2)
SET @day = DATEPART(DAY, GETDATE())
PRINT @day
如果今天是12月9日,上面会打印“9”。
我想打印“09”。我该怎么做呢?
答案 0 :(得分:87)
用00填充它并采取正确的2:
DECLARE @day CHAR(2)
SET @day = RIGHT('00' + CONVERT(NVARCHAR(2), DATEPART(DAY, GETDATE())), 2)
print @day
答案 1 :(得分:22)
使用SQL Server日期样式预先设置日期值的格式。
SELECT
CONVERT(varchar(2), GETDATE(), 101) AS monthLeadingZero -- Date Style 101 = mm/dd/yyyy
,CONVERT(varchar(2), GETDATE(), 103) AS dayLeadingZero -- Date Style 103 = dd/mm/yyyy
答案 2 :(得分:17)
对于SQL Server 2012及更高版本,使用前导零:
SELECT FORMAT(GETDATE(),'MM')
<强>不强>
SELECT MONTH(GETDATE())
答案 3 :(得分:9)
试试这个:
SELECT CONVERT(varchar(2), GETDATE(), 101)
答案 4 :(得分:4)
领先0天
SELECT FORMAT(GetDate(), 'dd')
答案 5 :(得分:1)
Select Replicate('0',2 - DataLength(Convert(VarChar(2),DatePart(DAY, GetDate()))) + Convert(VarChar(2),DatePart(DAY, GetDate())
他说,从脸颊上取下舌头后,他说得更加整洁。
通常当您必须在SQL中开始执行此类操作时,您需要从我可以切换到我应该这样做。
答案 6 :(得分:0)
这是左边填充任何内容的通用方法。这个概念是使用REPLICATE来创建一个只有填充值的版本。然后,如果数据为NULLable,则使用isnull / coalesce调用将其与实际值连接。您现在有一个字符串,其目标大小是目标长度的两倍,或者介于两者之间。现在只需剪掉N个最右边的角色,你就会有一个左边填充的字符串。
SELECT RIGHT(REPLICATE('0', 2) + CAST(DATEPART(DAY, '2012-12-09') AS varchar(2)), 2) AS leftpadded_day
CONVERT函数提供了各种获取预格式化日期的方法。格式103指定dd
,这意味着保留前导零,因此需要做的就是切掉前两个字符。
SELECT CONVERT(char(2), CAST('2012-12-09' AS datetime), 103) AS convert_day
答案 7 :(得分:0)
SELECT RIGHT('0'
+ CONVERT(VARCHAR(2), Month( column_name )), 2)
FROM table
答案 8 :(得分:0)
DECLARE @day CHAR(2)
SET @day = right('0'+ cast(day(getdate())as nvarchar(2)),2)
print @day
答案 9 :(得分:0)
SQL Server 2012 + (两个月和日):
SELECT FORMAT(GetDate(),'MMdd')
如果您也决定要年份,请使用:
SELECT FORMAT(GetDate(),'yyyyMMdd')
答案 10 :(得分:-1)
选择 对(&#39; 0000&#39; + cast(datepart(year,GETDATE())为varchar(4)),4)+&#39; - &#39; + + 对(&#39; 00&#39; + cast(datepart(月,GETDATE())为varchar(2)),2)+&#39; - &#39; + + 对(&#39; 00&#39; + cast(datepart(day,getdate())为varchar(2)),2)为YearMonthDay