DECLARE @day CHAR(2)
SET @day = DATEPART(DAY, GETDATE())
PRINT @day
如果今天是 12 月 9 日,上面将打印“9”。
我想打印“09”。我该怎么做呢?
用 00 填充它并取右 2:
DECLARE @day CHAR(2)
SET @day = RIGHT('00' + CONVERT(NVARCHAR(2), DATEPART(DAY, GETDATE())), 2)
print @day
对于 SQL Server 2012 及更高版本,带有前导零:
SELECT FORMAT(GETDATE(),'MM')
没有:
SELECT MONTH(GETDATE())
使用 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
试试这个 :
SELECT CONVERT(varchar(2), GETDATE(), 101)
领先0天
SELECT FORMAT(GetDate(), 'dd')
SQL Server 2012+(月和日):
SELECT FORMAT(GetDate(),'MMdd')
如果您决定也想要年份,请使用:
SELECT FORMAT(GetDate(),'yyyyMMdd')
Select Replicate('0',2 - DataLength(Convert(VarChar(2),DatePart(DAY, GetDate()))) + Convert(VarChar(2),DatePart(DAY, GetDate())
干净得多,他在从脸颊上取下舌头后说。
通常当你必须开始在 SQL 中做这种事情时,你需要从 can I 切换到 should I。
SELECT RIGHT('0'
+ CONVERT(VARCHAR(2), Month( column_name )), 2)
FROM table
这是左填充任何东西的通用方法。这个概念是使用 REPLICATE 创建一个版本,它只不过是填充值。然后将其与实际值连接起来,如果数据可以为 NULL,则使用 isnull/coalesce 调用。你现在有一个字符串,它是目标大小的两倍,正好是目标长度或介于两者之间。现在只需简单地去掉 N 个最右边的字符,你就有了一个左填充字符串。
SELECT RIGHT(REPLICATE('0', 2) + CAST(DATEPART(DAY, '2012-12-09') AS varchar(2)), 2) AS leftpadded_day
CONVERT函数提供了多种获取预格式化日期的方法。格式 103 指定dd
保留前导零的方法,因此只需切掉前 2 个字符。
SELECT CONVERT(char(2), CAST('2012-12-09' AS datetime), 103) AS convert_day
DECLARE @day CHAR(2)
SET @day = right('0'+ cast(day(getdate())as nvarchar(2)),2)
print @day
采用
CONVERT(CHAR(2), DATE_COLUMN, 101)
获取带有 2 个字符的月份部分和
CONVERT(CHAR(2), DATE_COLUMN, 103)
白天。
如果这是你想要的,我可以建议这个用户定义的函数:
CREATE FUNCTION dbo.date_code (@my_date date) RETURNS INT
BEGIN;
DECLARE @retval int;
SELECT @retval = CAST(CAST(datepart(year,@my_date) AS nvarchar(4))
+ CONVERT(CHAR(2),@my_date, 101)
+ CONVERT(CHAR(2),@my_date, 103) AS int);
RETURN @retval;
END
go
调用它:
SELECT dbo.date_code(getdate())
它从今天开始返回
20211129
select right('0000' + cast(datepart(year, GETDATE()) as varchar(4)), 4) + '-'+ + right('00' + cast(datepart(month, GETDATE()) as varchar (2)), 2) + '-'+ + right('00' + cast(datepart(day, getdate()) as varchar(2)), 2) as YearMonthDay