Мені потрібно отримати доступ лише до Month.Year від поля Date в SQL Server.
Мені потрібно отримати доступ лише до Month.Year від поля Date в SQL Server.
Відповіді:
Окрім запропонованих пропозицій, є ще одна можливість, яку я можу зробити з вашого запитання:
- Ви все ще хочете, щоб результат був датою,
- але ви хочете "відкинути" Дні, Години тощо
- Залишаючи рік / місяць єдине поле дати
SELECT
DATEADD(MONTH, DATEDIFF(MONTH, 0, <dateField>), 0) AS [year_month_date_field]
FROM
<your_table>
Це отримує кількість цілих місяців від базової дати (0), а потім додає їх до цієї базової дати. Таким чином, округлюючи вниз до місяця, в якому дата знаходиться.
ПРИМІТКА: У SQL Server 2008, ви все одно будете додавати TIME як 00: 00: 00.000 Це не зовсім те саме, що "видалення" будь-яких позначень дня та часу взагалі. Також ДЕНЬ встановлений на перший. наприклад 2009-10-01 00: 00: 00.000
select month(dateField), year(dateField)
SELECT convert(varchar(7), getdate(), 126)
Ви можете перевірити цей веб-сайт: 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
вихід буде виглядати так: "Грудень 2013"
Для цього є дві функції SQL:
Для отримання детальної інформації зверніться до пов'язаної документації.
запишемо це так: YEAR(anySqlDate)
і MONTH(anySqlDate)
. Спробуйте це, YEAR(GETDATE())
наприклад.
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
Я трактую ваше запитання двома способами.
а) Вам потрібен лише місяць і рік окремо, і в цьому випадку тут відповідь
select
[YEAR] = YEAR(getdate())
,[YEAR] = DATEPART(YY,getdate())
, [MONTH] = month(getdate())
,[MONTH] = DATEPART(mm,getdate())
,[MONTH NAME] = DATENAME(mm, getdate())
б)
Ви хочете відображатись із заданої дати, наприклад, '2009-11-24 09:01:55.483'
у форматі MONTH.YEAR . Тож вихід повинен бути таким, як 11.2009
у цьому випадку.
Якщо це має бути так, то спробуйте це (серед інших альтернатив)
select [Month.Year] = STUFF(CONVERT(varchar(10), GETDATE(),104),1,3,'')
RIGHT(CONVERT(VARCHAR(10), reg_dte, 105), 7)
Спробуйте це:
Португальська
SELECT format(dateadd(month, 0, getdate()), 'MMMM', 'pt-pt') + ' ' + convert(varchar(10),year(getdate()),100)
Результат: майо 2019
Англійська
SELECT format(dateadd(month, 0, getdate()), 'MMMM', 'en-US') + ' ' + convert(varchar(10),year(getdate()),100)
Результат: травень 2019 року
Якщо ви хочете іншою мовою, змініть " pt-pt " або " en-US " на будь-яку з цих посилань
У мене була конкретна вимога зробити щось подібне там, де було б показано місяць-рік, що можна зробити наступним чином:
SELECT DATENAME(month, GETDATE()) + '-' + CAST(YEAR(GETDATE()) AS nvarchar) AS 'Month-Year'
У моєму конкретному випадку мені потрібно було це зменшити до 3-х літнього місяця з двозначним роком, виглядаючи так:
SELECT LEFT(DATENAME(month, GETDATE()), 3) + '-' + CAST(RIGHT(YEAR(GETDATE()),2) AS nvarchar(2)) AS 'Month-Year'
Отримайте місяць та рік від дати
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), ' ', '-')
Вихід: березень-2019
Запит: - Select datename(m,GETDATE())+'-'+cast(datepart(yyyy,GETDATE()) as varchar) as FieldName
Вихід: - січень-2019
загальне поле дати, яке ми можемо використовувати
datename(m,<DateField>)+' '+cast(datepart(yyyy,<DateField>) as varchar) as FieldName
Для результату: "РРРР-ММ"
SELECT cast(YEAR(<DateColumn>) as varchar) + '-' + cast(Month(<DateColumn>) as varchar)
select convert(varchar(11), transfer_date, 106)
отримав мені бажаний результат дати, відформатованого як 07 березня 2018 року
Мій стовпець 'transfer_date' - це стовпець типу дати, і я використовую SQL Server 2017 під час роботи