Konwertuj numer miesiąca na nazwę miesiąca funkcja w SQL
Mam miesiące przechowywane w SQL Server jako 1,2,3,4,...12. Chciałbym je wyświetlać jako Styczeń, Luty itp. Czy istnieje funkcja w SQL Server jak MonthName (1) = January? Staram się unikać zeznań, jeśli to możliwe.
29 answers
Trochę hacky ale powinno działać:
SELECT DATENAME(month, DATEADD(month, @mydate-1, CAST('2008-01-01' AS datetime)))
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2008-10-09 01:03:33
Myślę, że jest to najlepszy sposób, aby uzyskać nazwa miesiąca Gdy masz numer miesiąca
Select DateName( month , DateAdd( month , @MonthNumber , 0 ) - 1 )
Lub
Select DateName( month , DateAdd( month , @MonthNumber , -1 ) )
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-05-15 15:14:48
SELECT DATENAME(month, GETDATE()) AS 'Month Name'
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-11-21 21:05:50
SUBSTRING('JAN FEB MAR APR MAY JUN JUL AUG SEP OCT NOV DEC ', (@intMonth * 4) - 3, 3)
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-11-21 21:06:22
Użyj najlepszego sposobu
Select DateName( month , DateAdd( month , @MonthNumber , -1 ))
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-09-18 09:50:19
To bardzo proste.
select DATENAME(month, getdate())
Wyjście : Styczeń
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-01-26 14:40:30
Dla mnie działa:
CAST (GETDATE () AS CHAR (3))
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-02-26 12:17:14
Oprócz oryginału
SELECT DATENAME(m, str(2) + '/1/2011')
Możesz to zrobić
SELECT DATENAME(m, str([column_name]) + '/1/2011')
W ten sposób otrzymujesz nazwy wszystkich wierszy w tabeli. gdzie [column_name] reprezentuje kolumnę całkowitą zawierającą wartość liczbową od 1 do 12
2 reprezentuje dowolną liczbę całkowitą, za pomocą ciągu kontaktowego utworzyłem datę, w której mogę wyodrębnić miesiąc. '/1 / 2011 ' może być dowolną datą
Jeśli chcesz to zrobić ze zmienną
DECLARE @integer int;
SET @integer = 6;
SELECT DATENAME(m, str(@integer) + '/1/2011')
W niektórych lokalizacjach, takich jak Hebrajski, istnieją miesiące przestępne zależne od roku, więc aby uniknąć błędów w takich lokalizacjach, można rozważyć następujące rozwiązanie:
SELECT DATENAME(month, STR(YEAR(GETDATE()), 4) + REPLACE(STR(@month, 2), ' ', '0') + '01')
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2008-10-09 01:15:31
Możesz użyć wbudowanej funkcji CONVERT
select CONVERT(varchar(3), Date, 100) as Month from MyTable.
To wyświetli pierwsze 3 znaki miesiąca (Styczeń, Luty itp..)
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-11-21 21:05:33
Użyj tej Instrukcji, Aby przekonwertować wartość liczbową miesiąca na nazwę miesiąca.
SELECT CONVERT(CHAR(3), DATENAME(MONTH, GETDATE()))
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-02-23 10:09:32
Możesz użyć funkcji convert jak poniżej
CONVERT(VARCHAR(3), DATENAME(MM, GETDATE()), 100)
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-11-21 21:05:45
To na pewno zadziała --select datename (m, GETDATE ())
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-07-05 09:55:49
Po prostu odjmij bieżący miesiąc od dzisiejszej daty, a następnie dodaj swój numer miesiąca. Następnie użyj funkcji datename, aby podać pełną nazwę WSZYSTKICH w 1 linii.
print datename(month,dateadd(month,-month(getdate()) + 9,getdate()))
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-09-29 21:41:26
Myślę, że to wystarczy, aby uzyskać nazwę miesiąca, gdy masz datę.
SELECT DATENAME(month ,GETDATE())
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-10-04 09:33:40
Aby przekonwertować numer miesiąca na nazwę miesiąca, wypróbuj poniższą metodę
declare @month smallint = 1
select DateName(mm,DATEADD(mm,@month - 1,0))
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-03-06 12:46:33
Ten u mnie zadziałał:
@MetricMonthNumber (some number)
SELECT
(DateName( month , DateAdd( month , @MetricMonthNumber - 1 , '1900-01-01' ) )) AS MetricMonthName
FROM TableName
Z postu powyżej od @ leoinfo i @ Valentino Vranken. Po prostu zrobiłem szybki wybór i działa.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-08-05 23:20:16
Declare @MonthNumber int
SET @MonthNumber=DatePart(Month,GETDATE())
Select DateName( month , DateAdd( month , @MonthNumber , 0 ) - 1 )
Wyjaśnienie:
- Pierwsza Zmienna Kalkomanii
MonthNumber
- Get Current Month for
DatePart
which Return Month Number - Third Query Return Month Name
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-07-20 07:20:53
SELECT DATENAME(MONTH,dateadd (month, -3,getdate ()))
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-05-09 13:45:10
select monthname(curdate());
Lub
select monthname('2013-12-12');
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-12-14 05:40:52
Working for me
SELECT MONTHNAME(<fieldname>) AS "Month Name" FROM <tablename> WHERE <condition>
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-12-14 13:47:11
SELECT DateName(M, DateAdd(M, @MONTHNUMBER, -1))
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-04-28 21:12:11
/ Align = "left" / np: - Users table
id name created_at
1 abc 2017-09-16
2 xyz 2017-06-10
Możesz uzyskać nazwę miesiąca w następujący sposób
select year(created_at), monthname(created_at) from users;
Wyjście
+-----------+-------------------------------+
| year(created_at) | monthname(created_at) |
+-----------+-------------------------------+
| 2017 | september |
| 2017 | june |
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-09-22 06:04:04
Użyj tej Instrukcji, Aby uzyskać nazwę miesiąca:
DECLARE @date datetime
SET @date='2015/1/4 00:00:00'
SELECT CAST(DATENAME(month,@date ) AS CHAR(3))AS 'Month Name'
To da ci krótką nazwę miesiąca. Jak to: Styczeń, Luty, Marzec itp.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-06-04 06:15:58
Oto moje rozwiązanie wykorzystujące niektóre informacje od innych do rozwiązania problemu.
datename(month,dateadd(month,datepart(month,Help_HelpMain.Ticket_Closed_Date),-1)) as monthname
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-06-24 15:58:21
W SQL serverze nie ma funkcji zdefiniowanej przez system. Ale możesz utworzyć własną funkcję zdefiniowaną przez użytkownika-funkcję skalarną. Funkcje skalarne znajdziesz w Eksploratorze obiektów dla twojej bazy danych: programowalność - > Funkcje->Funkcje skalarne. Poniżej, używam zmiennej tabeli, aby połączyć to wszystko razem.
--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]
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-12-16 21:58:44
Począwszy od SQL Server 2012, możesz użyć formatu I DATEFROMPARTS, aby rozwiązać ten problem.
select FORMAT(DATEFROMPARTS(1900, @month_num, 1), 'MMMM', 'en-US')
Jeśli chcesz trzyliterowy miesiąc:
select FORMAT(DATEFROMPARTS(1900, @month_num, 1), 'MMM', 'en-US')
Jeśli naprawdę chcesz, możesz utworzyć dla tego funkcję:
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
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-06-22 14:27:48
to_char(to_date(V_MONTH_NUM,'MM'),'MONTH')
Gdzie V_MONTH_NUM
to numer miesiąca
SELECT to_char(to_date(V_MONTH_NUM,'MM'),'MONTH') from dual;
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-10-11 09:37:31
Użyj tego stwierdzenia
SELECT TO_CHAR(current_date,'dd MONTH yyyy') FROM dual
To przekonwertuje numer miesiąca na pełny łańcuch miesiąca
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-11-21 21:06:08