Potrzebuję dostępu tylko do pola Month.Year from Date w SQL Server.
Potrzebuję dostępu tylko do pola Month.Year from Date w SQL Server.
Odpowiedzi:
Oprócz podanych już sugestii jest jeszcze jedna możliwość, którą mogę wywnioskować z twojego pytania:
- Nadal chcesz, aby wynik był datą
- Ale chcesz `` odrzucić '' dni, godziny itp.
- Opuszczenie roku / miesiąca tylko pole daty
SELECT
DATEADD(MONTH, DATEDIFF(MONTH, 0, <dateField>), 0) AS [year_month_date_field]
FROM
<your_table>
Pobiera liczbę pełnych miesięcy od daty bazowej (0), a następnie dodaje je do tej daty bazowej. W ten sposób zaokrąglamy w dół do miesiąca, w którym przypada data.
UWAGA: W SQL Server 2008 nadal będziesz mieć dołączony TIME jako 00: 00: 00.000. To nie jest dokładnie to samo, co „usunięcie” jakiegokolwiek zapisu dnia i godziny. Również DZIEŃ ustawiony na pierwszy. np. 2009-10-01 00: 00: 00.000
select month(dateField), year(dateField)
SELECT convert(varchar(7), getdate(), 126)
Możesz sprawdzić tę stronę internetową: http://anubhavg.wordpress.com/2009/06/11/how-to-format-datetime-date-in-sql-server-2005/
SELECT DATEPART(yy, DateVal)
SELECT DATEPART(MM, DateVal)
SELECT DATENAME(MM, DateVal)
datename(m,column)+' '+cast(datepart(yyyy,column) as varchar) as MonthYear
wynik będzie wyglądał następująco: „Grudzień 2013”
Służą do tego dwie funkcje SQL:
Szczegółowe informacje można znaleźć w dołączonej dokumentacji.
zapiszmy to w ten sposób: YEAR(anySqlDate)
i MONTH(anySqlDate)
. Wypróbuj YEAR(GETDATE())
na przykład.
convert(varchar(7), <date_field>, 120)
because 120 results in 'yyyy-MM-dd' which is varchar(10)
using varchar(7) will display only year and month
example:
select convert(varchar(7), <date_field>, 120), COUNT(*)
from <some_table>
group by convert(varchar(7), <date_field>, 120)
order by 1
Twoje pytanie interpretuję na dwa sposoby.
a) Potrzebujesz tylko miesiąca i roku osobno, w takim przypadku oto odpowiedź
select
[YEAR] = YEAR(getdate())
,[YEAR] = DATEPART(YY,getdate())
, [MONTH] = month(getdate())
,[MONTH] = DATEPART(mm,getdate())
,[MONTH NAME] = DATENAME(mm, getdate())
b)
Chcesz wyświetlać od podanej daty, powiedzmy '2009-11-24 09:01:55.483'
w formacie MIESIĄC.ROK . Więc wyjście powinno wyglądać jak 11.2009
w tym przypadku.
Jeśli tak ma być, spróbuj tego (wśród innych alternatyw)
select [Month.Year] = STUFF(CONVERT(varchar(10), GETDATE(),104),1,3,'')
RIGHT(CONVERT(VARCHAR(10), reg_dte, 105), 7)
Spróbuj tego:
portugalski
SELECT format(dateadd(month, 0, getdate()), 'MMMM', 'pt-pt') + ' ' + convert(varchar(10),year(getdate()),100)
Wynik: maio 2019
język angielski
SELECT format(dateadd(month, 0, getdate()), 'MMMM', 'en-US') + ' ' + convert(varchar(10),year(getdate()),100)
Wynik: maj 2019
Jeśli chcesz w innym języku, zmień „ pt-pt ” lub „ en-US ” na dowolny z tych w linku
Miałem konkretny wymóg zrobienia czegoś podobnego, w którym pokazywałby miesiąc-rok, co można zrobić w następujący sposób:
SELECT DATENAME(month, GETDATE()) + '-' + CAST(YEAR(GETDATE()) AS nvarchar) AS 'Month-Year'
W moim konkretnym przypadku musiałem to sprowadzić do 3-literowego skrótu miesiąca z 2-cyfrowym rokiem, wyglądającym mniej więcej tak:
SELECT LEFT(DATENAME(month, GETDATE()), 3) + '-' + CAST(RIGHT(YEAR(GETDATE()),2) AS nvarchar(2)) AS 'Month-Year'
Moja baza danych nie obsługuje większości powyższych funkcji, jednak stwierdziłem, że to działa:
SELECT * FROM table WHERE SUBSTR(datetime_column, starting_position, number_of_strings)=required_year_and_month;
na przykład:
SELECT SUBSTR(created, 1,7) FROM table;
zwraca rok i miesiąc w formacie „rrrr-mm”
Uzyskaj miesiąc i rok od daty
DECLARE @lcMonth nvarchar(10)
DECLARE @lcYear nvarchar(10)
SET @lcYear=(SELECT DATEPART(YEAR,@Date))
SET @lcMonth=(SELECT DATEPART(MONTH,@Date))
SELECT REPLACE(RIGHT(CONVERT(VARCHAR(11), GETDATE(), 106), 8), ' ', '-')
Wynik: marzec-2019
Zapytanie: - Select datename(m,GETDATE())+'-'+cast(datepart(yyyy,GETDATE()) as varchar) as FieldName
Wyjście: - styczeń-2019
ogólne pole daty, którego możemy użyć
datename(m,<DateField>)+' '+cast(datepart(yyyy,<DateField>) as varchar) as FieldName
Wynik: „RRRR-MM”
SELECT cast(YEAR(<DateColumn>) as varchar) + '-' + cast(Month(<DateColumn>) as varchar)
select convert(varchar(11), transfer_date, 106)
dostałem mój pożądany wynik w formacie daty w formacie 07 Mar 2018
Moja kolumna „transfer_date” to kolumna typu data-godzina i używam programu SQL Server 2017 na platformie Azure
wybierz CONCAT (MIESIĄC (GETDATE ()), „.”, ROK (GETDATE ()))
Wynik : 5.2020
wybierz CONCAT (DATENAME (MIESIĄC, GETDATE ()), „.”, ROK (GETDATE ()))
Wyjście: maj 2020