Jawaban:
Agak sedikit tetapi harus bekerja:
SELECT DATENAME(month, DATEADD(month, @mydate-1, CAST('2008-01-01' AS datetime)))
Saya pikir ini adalah cara terbaik untuk mendapatkan nama bulan ketika Anda memiliki nomor bulan
Select DateName( month , DateAdd( month , @MonthNumber , 0 ) - 1 )
Atau
Select DateName( month , DateAdd( month , @MonthNumber , -1 ) )
SUBSTRING('JAN FEB MAR APR MAY JUN JUL AUG SEP OCT NOV DEC ', (@intMonth * 4) - 3, 3)
Gunakan cara terbaik
Select DateName( month , DateAdd( month , @MonthNumber , -1 ))
selain asli
SELECT DATENAME(m, str(2) + '/1/2011')
kamu bisa melakukan ini
SELECT DATENAME(m, str([column_name]) + '/1/2011')
dengan cara ini Anda mendapatkan nama untuk semua baris dalam sebuah tabel. di mana [nama_kolom] mewakili kolom integer yang berisi nilai numerik 1 hingga 12
2 mewakili bilangan bulat apa pun, dengan string kontak saya membuat tanggal di mana saya dapat mengekstrak bulan. '/ 1/2011' dapat tanggal kapan saja
jika Anda ingin melakukan ini dengan variabel
DECLARE @integer int;
SET @integer = 6;
SELECT DATENAME(m, str(@integer) + '/1/2011')
Gunakan pernyataan ini untuk mengonversi nilai numerik Bulan ke nama Bulan.
SELECT CONVERT(CHAR(3), DATENAME(MONTH, GETDATE()))
Di beberapa lokal seperti Ibrani, ada bulan kabisat tergantung pada tahun sehingga untuk menghindari kesalahan di lokasi tersebut Anda dapat mempertimbangkan solusi berikut:
SELECT DATENAME(month, STR(YEAR(GETDATE()), 4) + REPLACE(STR(@month, 2), ' ', '0') + '01')
Dimulai dengan SQL Server 2012, Anda dapat menggunakan FORMAT dan DATEFROMPARTS untuk menyelesaikan masalah ini. (Jika Anda ingin nama bulan dari budaya lain, ubah en-US
:)
select FORMAT(DATEFROMPARTS(1900, @month_num, 1), 'MMMM', 'en-US')
Jika Anda ingin bulan tiga huruf:
select FORMAT(DATEFROMPARTS(1900, @month_num, 1), 'MMM', 'en-US')
Jika Anda benar-benar ingin, Anda dapat membuat fungsi untuk ini:
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
Cukup kurangi bulan saat ini dari tanggal hari ini, lalu tambahkan kembali nomor bulan Anda. Kemudian gunakan fungsi nama file untuk memberikan nama lengkap semua dalam 1 baris.
print datename(month,dateadd(month,-month(getdate()) + 9,getdate()))
Yang ini bekerja untuk saya:
@MetricMonthNumber (some number)
SELECT
(DateName( month , DateAdd( month , @MetricMonthNumber - 1 , '1900-01-01' ) )) AS MetricMonthName
FROM TableName
Dari pos di atas dari @leoinfo dan @Valentino Vranken. Lakukan saja seleksi cepat dan berfungsi.
Declare @MonthNumber int
SET @MonthNumber=DatePart(Month,GETDATE())
Select DateName( month , DateAdd( month , @MonthNumber , 0 ) - 1 )
Penjelasan:
MonthNumber
DatePart
Nomor Bulan PengembalianBekerja untukku
SELECT MONTHNAME(<fieldname>) AS "Month Name" FROM <tablename> WHERE <condition>
Anda bisa mendapatkan tanggal seperti ini. misalnya: - Tabel pengguna
id name created_at
1 abc 2017-09-16
2 xyz 2017-06-10
Anda bisa mendapatkan nama bulan seperti ini
select year(created_at), monthname(created_at) from users;
keluaran
+-----------+-------------------------------+
| year(created_at) | monthname(created_at) |
+-----------+-------------------------------+
| 2017 | september |
| 2017 | june |
Gunakan pernyataan ini untuk mendapatkan nama bulan:
DECLARE @date datetime
SET @date='2015/1/4 00:00:00'
SELECT CAST(DATENAME(month,@date ) AS CHAR(3))AS 'Month Name'
Ini akan memberi Anda nama bulan pendek. Seperti ini: Jan, Feb, Mar, dll.
Ini solusi saya menggunakan beberapa informasi dari orang lain untuk menyelesaikan masalah.
datename(month,dateadd(month,datepart(month,Help_HelpMain.Ticket_Closed_Date),-1)) as monthname
Tidak ada fungsi sistem yang didefinisikan dalam SQL server. Tetapi Anda dapat membuat sendiri fungsi yang ditentukan pengguna - fungsi skalar. Anda akan menemukan fungsi skalar di Object Explorer untuk database Anda: Programmability-> Functions-> Functions-dihargai Functions. Di bawah ini, saya menggunakan variabel tabel untuk menyatukan semuanya.
--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]
Anda dapat membuat fungsi seperti ini untuk menghasilkan Bulan dan melakukan SELECT dbo.fn_GetMonthFromDate (date_column) sebagai Month FROM 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
Cara termudah adalah dengan memanggil fungsi MONTHNAME(your_date)
. tanggal_anda bisa berupa nilai statis atau nilai dari salah satu bidang tabel Anda.
SELECT MONTHNAME (concat ('1970 -', [Month int val], '- 01'))
example- SELECT MONTHNAME (concat ('1970 -', 4, '- 01'))
jawaban- April