根据缩写显示当前月份值 (Oct) SQL 服务器
Display current month values based upon abbreviation (Oct) SQL Server
我目前正在处理一个看起来像这样的 table:
PersonID Month
1 Dec
2 Jan
3 Oct
4 Oct
5 Jan
6 Feb
我想要 select 月份等于今天月份的行。因此,例如,对于本月,我想要所有等于 10 月的行,但显然这显示为 'Oct'。无论如何我可以做到这一点吗?
期望的输出
PersonID Month
3 Oct
4 Oct
我想可能是
SELECT *,
CASE WHEN Month = 'Oct'
THEN '01-10-17'
ELSE 'N/A' END AS [Date]
FROM Person
WHERE Month([Date]) = Month(getdate())
但我不确定这个逻辑是否可靠。
您可以使用:
SELECT *
FROM Person
WHERE FORMAT(GETDATE(), 'MMM') = Month;
备注:
- SQL Server 2012 及以上
- 会话语言应为英语:
SET LANGUAGE English;
如果不是 2012+,还有一个选择。
Select left(datename(MONTH,getdate()),3)
Returns
Oct
因此对于您的实际查询
Select *
From Person
Where Month = left(datename(MONTH,getdate()),3)
这是使用 CONVERT 的另一种方法:
SELECT *
FROM Person
WHERE Month = Convert(char(3), GetDate(), 0)
我目前正在处理一个看起来像这样的 table:
PersonID Month
1 Dec
2 Jan
3 Oct
4 Oct
5 Jan
6 Feb
我想要 select 月份等于今天月份的行。因此,例如,对于本月,我想要所有等于 10 月的行,但显然这显示为 'Oct'。无论如何我可以做到这一点吗?
期望的输出
PersonID Month
3 Oct
4 Oct
我想可能是
SELECT *,
CASE WHEN Month = 'Oct'
THEN '01-10-17'
ELSE 'N/A' END AS [Date]
FROM Person
WHERE Month([Date]) = Month(getdate())
但我不确定这个逻辑是否可靠。
您可以使用:
SELECT *
FROM Person
WHERE FORMAT(GETDATE(), 'MMM') = Month;
备注:
- SQL Server 2012 及以上
- 会话语言应为英语:
SET LANGUAGE English;
如果不是 2012+,还有一个选择。
Select left(datename(MONTH,getdate()),3)
Returns
Oct
因此对于您的实际查询
Select *
From Person
Where Month = left(datename(MONTH,getdate()),3)
这是使用 CONVERT 的另一种方法:
SELECT *
FROM Person
WHERE Month = Convert(char(3), GetDate(), 0)