ฉันเก็บเดือนไว้ใน SQL Server เป็น 1,2,3,4, ... 12 ฉันต้องการแสดงเป็นมกราคมกุมภาพันธ์เป็นต้นมีฟังก์ชันใน SQL Server เช่น MonthName (1) = January หรือไม่ ฉันพยายามหลีกเลี่ยงคำสั่ง CASE ถ้าเป็นไปได้
ฉันเก็บเดือนไว้ใน SQL Server เป็น 1,2,3,4, ... 12 ฉันต้องการแสดงเป็นมกราคมกุมภาพันธ์เป็นต้นมีฟังก์ชันใน SQL Server เช่น MonthName (1) = January หรือไม่ ฉันพยายามหลีกเลี่ยงคำสั่ง CASE ถ้าเป็นไปได้
คำตอบ:
แฮ็คเล็กน้อย แต่ควรทำงาน:
SELECT DATENAME(month, DATEADD(month, @mydate-1, CAST('2008-01-01' AS datetime)))
ฉันคิดว่านี่เป็นวิธีที่ดีที่สุดในการรับชื่อเดือนเมื่อคุณมีหมายเลขเดือน
Select DateName( month , DateAdd( month , @MonthNumber , 0 ) - 1 )
หรือ
Select DateName( month , DateAdd( month , @MonthNumber , -1 ) )
SELECT DATENAME(month, GETDATE()) AS 'Month Name'
SUBSTRING('JAN FEB MAR APR MAY JUN JUL AUG SEP OCT NOV DEC ', (@intMonth * 4) - 3, 3)
ใช้วิธีที่ดีที่สุด
Select DateName( month , DateAdd( month , @MonthNumber , -1 ))
คุณสามารถใช้CONVERT
ฟังก์ชั่นinbuilt
select CONVERT(varchar(3), Date, 100) as Month from MyTable.
สิ่งนี้จะแสดง 3 ตัวอักษรแรกของเดือน (JAN, FEB ฯลฯ .. )
นอกเหนือจากต้นฉบับ
SELECT DATENAME(m, str(2) + '/1/2011')
คุณสามารถทำได้
SELECT DATENAME(m, str([column_name]) + '/1/2011')
วิธีนี้คุณจะได้รับชื่อสำหรับทุกแถวในตาราง โดยที่ [column_name] หมายถึงคอลัมน์จำนวนเต็มที่มีค่าตัวเลข 1 ถึง 12
2 หมายถึงจำนวนเต็มใด ๆ โดยสตริงการติดต่อฉันสร้างวันที่ฉันสามารถแยกเดือน '/ 1/2011' สามารถเป็นวันใดก็ได้
ถ้าคุณต้องการทำกับตัวแปร
DECLARE @integer int;
SET @integer = 6;
SELECT DATENAME(m, str(@integer) + '/1/2011')
งานต่อไปนี้สำหรับฉัน:
CAST(GETDATE() AS CHAR(3))
ใช้คำสั่งนี้เพื่อแปลงค่าตัวเลขเดือนเป็นชื่อเดือน
SELECT CONVERT(CHAR(3), DATENAME(MONTH, GETDATE()))
ในบางแห่งเช่นฮีบรูมีเดือนอธิกสุรทินที่ขึ้นอยู่กับปีดังนั้นเพื่อหลีกเลี่ยงข้อผิดพลาดในสถานที่ดังกล่าวคุณอาจพิจารณาวิธีแก้ปัญหาต่อไปนี้:
SELECT DATENAME(month, STR(YEAR(GETDATE()), 4) + REPLACE(STR(@month, 2), ' ', '0') + '01')
แน่นอนว่ามันจะใช้ได้
select datename(M,GETDATE())
เริ่มต้นด้วย SQL Server 2012 คุณสามารถใช้FORMATและDATEFROMPARTSเพื่อแก้ปัญหานี้ (ถ้าคุณต้องการชื่อเดือนนับจากวัฒนธรรมอื่น ๆ การเปลี่ยนแปลง: en-US
)
select FORMAT(DATEFROMPARTS(1900, @month_num, 1), 'MMMM', 'en-US')
ถ้าคุณต้องการเดือนสามตัวอักษร:
select FORMAT(DATEFROMPARTS(1900, @month_num, 1), 'MMM', 'en-US')
หากคุณต้องการจริงๆคุณสามารถสร้างฟังก์ชั่นสำหรับสิ่งนี้:
CREATE FUNCTION fn_month_num_to_name
(
@month_num tinyint
)
RETURNS varchar(20)
AS
BEGIN
RETURN FORMAT(DATEFROMPARTS(1900, @month_num, 1), 'MMMM', 'en-US')
END
คุณสามารถใช้ฟังก์ชันการแปลงได้ดังต่อไปนี้
CONVERT(VARCHAR(3), DATENAME(MM, GETDATE()), 100)
เพียงแค่ลบเดือนปัจจุบันจากวันที่วันนี้จากนั้นเพิ่มหมายเลขเดือนของคุณกลับ จากนั้นใช้ฟังก์ชันชื่อไฟล์เพื่อให้ชื่อเต็มใน 1 บรรทัด
print datename(month,dateadd(month,-month(getdate()) + 9,getdate()))
ฉันคิดว่ามันเพียงพอที่จะรับชื่อเดือนเมื่อคุณมีวันที่
SELECT DATENAME(month ,GETDATE())
SELECT DateName(M, DateAdd(M, @MONTHNUMBER, -1))
หากต้องการแปลงหมายเลขเดือนเป็นชื่อเดือนให้ลองด้านล่าง
declare @month smallint = 1
select DateName(mm,DATEADD(mm,@month - 1,0))
SELECT DATENAME(MONTH,dateadd(month, -3,getdate()))
อันนี้ใช้ได้สำหรับฉัน:
@MetricMonthNumber (some number)
SELECT
(DateName( month , DateAdd( month , @MetricMonthNumber - 1 , '1900-01-01' ) )) AS MetricMonthName
FROM TableName
จากโพสต์ด้านบนจาก @leMp3 และ @Valentino Vranken เพิ่งเลือกอย่างรวดเร็วและใช้งานได้
Declare @MonthNumber int
SET @MonthNumber=DatePart(Month,GETDATE())
Select DateName( month , DateAdd( month , @MonthNumber , 0 ) - 1 )
ชี้แจง:
MonthNumber
DatePart
ที่ส่งคืนหมายเลขเดือนselect monthname(curdate());
หรือ
select monthname('2013-12-12');
ทำงานให้ฉัน
SELECT MONTHNAME(<fieldname>) AS "Month Name" FROM <tablename> WHERE <condition>
คุณสามารถได้รับวันที่เช่นนี้ เช่น: - ตารางผู้ใช้
id name created_at
1 abc 2017-09-16
2 xyz 2017-06-10
คุณสามารถรับชื่อเดือนได้เช่นนี้
select year(created_at), monthname(created_at) from users;
เอาท์พุต
+-----------+-------------------------------+
| year(created_at) | monthname(created_at) |
+-----------+-------------------------------+
| 2017 | september |
| 2017 | june |
ใช้คำสั่งนี้เพื่อรับชื่อเดือน:
DECLARE @date datetime
SET @date='2015/1/4 00:00:00'
SELECT CAST(DATENAME(month,@date ) AS CHAR(3))AS 'Month Name'
ชื่อนี้จะให้ชื่อสั้น ๆ เช่นนี้: ม.ค. , ก.พ. , มี.ค. , ฯลฯ
นี่คือวิธีการแก้ปัญหาของฉันโดยใช้ข้อมูลบางอย่างจากคนอื่น ๆ เพื่อแก้ปัญหา
datename(month,dateadd(month,datepart(month,Help_HelpMain.Ticket_Closed_Date),-1)) as monthname
ไม่มีฟังก์ชั่นที่ระบบกำหนดในเซิร์ฟเวอร์ SQL แต่คุณสามารถสร้างฟังก์ชั่นที่ผู้ใช้กำหนดเองซึ่งเป็นฟังก์ชันสเกลาร์ คุณจะพบฟังก์ชั่นสเกลาร์ใน Object Explorer สำหรับฐานข้อมูลของคุณ: ความสามารถในการโปรแกรม -> ฟังก์ชั่น -> ฟังก์ชั่นที่คุ้มค่าสเกลาร์ ด้านล่างฉันใช้ตัวแปรตารางเพื่อรวมเข้าด้วยกัน
--Create the user-defined function
CREATE FUNCTION getmonth (@num int)
RETURNS varchar(9) --since 'September' is the longest string, length 9
AS
BEGIN
DECLARE @intMonth Table (num int PRIMARY KEY IDENTITY(1,1), month varchar(9))
INSERT INTO @intMonth VALUES ('January'), ('February'), ('March'), ('April'), ('May')
, ('June'), ('July'), ('August') ,('September'), ('October')
, ('November'), ('December')
RETURN (SELECT I.month
FROM @intMonth I
WHERE I.num = @num)
END
GO
--Use the function for various months
SELECT dbo.getmonth(4) AS [Month]
SELECT dbo.getmonth(5) AS [Month]
SELECT dbo.getmonth(6) AS [Month]
คุณสามารถสร้างฟังก์ชันเช่นนี้เพื่อสร้างเดือนและเลือก SELECT dbo.fn_GetMonthFromDate (date_column) เป็นเดือนจาก table_name
/****** Object: UserDefinedFunction [dbo].[fn_GetMonthFromDate] Script Date: 11/16/2018 10:26:33 AM ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE FUNCTION [dbo].[fn_GetMonthFromDate]
(@date datetime)
RETURNS varchar(50)
AS
BEGIN
DECLARE @monthPart int
SET @monthPart = MONTH(@date)
IF @monthPart = 1
BEGIN
RETURN 'January'
END
ELSE IF @monthPart = 2
BEGIN
RETURN 'February'
END
ELSE IF @monthPart = 3
BEGIN
RETURN 'March'
END
ELSE IF @monthPart = 4
BEGIN
RETURN 'April'
END
ELSE IF @monthPart = 5
BEGIN
RETURN 'May'
END
ELSE IF @monthPart = 6
BEGIN
RETURN 'June'
END
ELSE IF @monthPart = 7
BEGIN
RETURN 'July'
END
ELSE IF @monthPart = 8
BEGIN
RETURN 'August'
END
ELSE IF @monthPart = 9
BEGIN
RETURN 'September'
END
ELSE IF @monthPart = 10
BEGIN
RETURN 'October'
END
ELSE IF @monthPart = 11
BEGIN
RETURN 'November'
END
ELSE IF @monthPart = 12
BEGIN
RETURN 'December'
END
RETURN NULL END
MONTHNAME(your_date)
วิธีที่ง่ายที่สุดคือการเรียกใช้ฟังก์ชัน your_dateสามารถเป็นค่าคงที่หรือค่าจากหนึ่งในเขตข้อมูลตารางของคุณ
เลือก MONTHNAME (concat ('1970 -', [Month int val], '- 01'))
ตัวอย่าง - เลือก MONTHNAME (concat ('1970 -', 4, '- 01'))
คำตอบ - เมษายน