Получение только месяца и года из SQL DATE

Мне нужно получить доступ только к полю Month.Year from Date в SQL Server.

Ответ 1

Как и уже упомянутые предложения, есть еще одна возможность, которую я могу сделать из вашего вопроса:
- Вы все еще хотите, чтобы результат был датой
- Но вы хотите "отказаться" от дней, часов и т.д.
- Оставить поле даты только за месяц/месяц

SELECT
   DATEADD(MONTH, DATEDIFF(MONTH, 0, <dateField>), 0) AS [year_month_date_field]
FROM
   <your_table>

Это число целых месяцев от базовой даты (0), а затем добавляет их к этой базовой дате. Таким образом, округление до месяца, в котором находится дата.

ПРИМЕЧАНИЕ. В SQL Server 2008 у вас все равно будет установлено ВРЕМЯ как 00: 00: 00.000 Это не совсем то же самое, что "удалить" любые обозначения дня и времени в целом. Также ДЕНЬ установлен на первый. например 2009-10-01 00: 00: 00.000

Ответ 2

select month(dateField), year(dateField)

Ответ 3

SELECT DATEPART(yy, DateVal)
SELECT DATEPART(MM, DateVal)
SELECT DATENAME(MM, DateVal)

Ответ 5

datename(m,column)+' '+cast(datepart(yyyy,column) as varchar) as MonthYear

вывод будет выглядеть так: 'декабрь 2013'

Ответ 6

Для этого есть две функции SQL:

Подробнее см. связанную документацию.

Ответ 7

напишите так: YEAR(anySqlDate) и MONTH(anySqlDate). Попробуйте, например, с помощью YEAR(GETDATE()).

Ответ 8

Это также может быть полезно.

SELECT YEAR(0), MONTH(0), DAY(0);

или

SELECT YEAR(getdate()), MONTH(getdate()), DAY(getdate());

или

SELECT YEAR(yourDateField), MONTH(yourDateField), DAY(yourDateField);

Ответ 9

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

Ответ 10

Я интерпретирую ваш вопрос двумя способами.

a) Вам нужно только месяц и год отдельно, и в этом случае вот ответ

select 
        [YEAR] = YEAR(getdate())
        ,[YEAR] = DATEPART(YY,getdate())
        , [MONTH] = month(getdate())
        ,[MONTH] = DATEPART(mm,getdate())
        ,[MONTH NAME] = DATENAME(mm, getdate()) 

b)

Вы хотите отобразить с указанной даты, произнесите '2009-11-24 09:01:55.483' в формате MONTH.YEAR. Таким образом, выход должен выглядеть как 11.2009 в этом случае.

Если это должно быть так, попробуйте это (среди других альтернатив)

select [Month.Year] = STUFF(CONVERT(varchar(10), GETDATE(),104),1,3,'')

Ответ 11

Некоторые базы данных, такие как MS ACCESS или RODBC могут не поддерживать функции SQL SERVER, но для любой базы данных, которая имеет функцию FORMAT вы можете просто сделать это:

SELECT FORMAT(<your-date-field>,"YYYY-MM") AS year-date FROM <your-table>

Ответ 12

RIGHT(CONVERT(VARCHAR(10), reg_dte, 105), 7) 

Ответ 13

CONCAT (datepart (yy,DATE), FORMAT (DATE,'MM')) 

например, 201601, если вы хотите получить шестизначный результат

Ответ 14

Попробуйте это

select to_char(DATEFIELD,'MON') from YOUR_TABLE

например.

select to_char(sysdate, 'MON') from dual

Ответ 15

Попробуй это:

португальский

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 " на любой из этих в ссылке

Ответ 16

Моя база данных не поддерживает большинство вышеперечисленных функций, однако я обнаружил, что это работает:

SELECT * FROM table WHERE SUBSTR(datetime_column, starting_position, number_of_strings)=required_year_and_month;

например: SELECT SUBSTR(created, 1,7) FROM table;

возвращает год и месяц в формате "yyyy-mm"

Ответ 17

select convert(varchar(11), transfer_date, 106) 

получил мне желаемый результат даты в формате 07 марта 2018

Мой столбец "Transfer_date" является столбцом типа datetime, и я использую SQL Server 2017 в Azure

Ответ 18

Для результата: "ГГГГ-ММ"

SELECT cast(YEAR(<DateColumn>) as varchar) + '-' + cast(Month(<DateColumn>) as varchar)

Ответ 19

Получить месяц и год от даты

DECLARE @lcMonth nvarchar(10)
DECLARE @lcYear nvarchar(10)

SET @lcYear=(SELECT  DATEPART(YEAR,@Date))
SET @lcMonth=(SELECT  DATEPART(MONTH,@Date))

Ответ 20

Запрос: - Select datename(m,GETDATE())+'-'+cast(datepart(yyyy,GETDATE()) as varchar) as FieldName

Выход: - январь-2019

общее поле даты мы можем использовать

datename(m,<DateField>)+' '+cast(datepart(yyyy,<DateField>) as varchar) as FieldName

Ответ 21

SELECT REPLACE(RIGHT(CONVERT(VARCHAR(11), GETDATE(), 106), 8), ' ', '-')

Выход: март-2019

Ответ 22

У меня было определенное требование сделать что-то подобное, где бы отображался месяц-год, что можно сделать следующим образом:

SELECT DATENAME(month, GETDATE()) + '-' + CAST(YEAR(GETDATE()) AS nvarchar) AS 'Month-Year'

В моем конкретном случае мне нужно было сократить его до трехбуквенного месяца с двухзначным годом, примерно так: SELECT LEFT(DATENAME(month, GETDATE()), 3) + '-' + CAST(RIGHT(YEAR(GETDATE()),2) AS nvarchar(2)) AS 'Month-Year'

Ответ 23

Попробуйте SELECT CONCAT(month(datefield), '.', year(datefield)) FROM YOURTABLE;