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



Мне нужно получить доступ только месяц.Поле год от даты в SQL Server.

1351   17  

17 ответов:

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

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

select month(dateField), year(dateField)
SELECT DATEPART(yy, DateVal)
SELECT DATEPART(MM, DateVal)
SELECT DATENAME(MM, DateVal)
SELECT convert(varchar(7), getdate(), 126) 

вы можете проверить этот сайт: http://anubhavg.wordpress.com/2009/06/11/how-to-format-datetime-date-in-sql-server-2005/

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

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

есть две функции SQL, чтобы сделать это:

дополнительную информацию см. В связанной документации.

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

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

или

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

или

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

давайте напишем это так: 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

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

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' на . Так что выход должен прийти как 11.2009 в этом случае.

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

select [Month.Year] = STUFF(CONVERT(varchar(10), GETDATE(),104),1,3,'')
RIGHT(CONVERT(VARCHAR(10), reg_dte, 105), 7) 

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

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

попробуй такое

select to_char(DATEFIELD,'MON') from YOUR_TABLE

например.

select to_char(sysdate, 'MON') from dual

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

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

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

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

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

выберите конвертировать(varchar (11), transfer_date, 106)

У меня мой желаемый результат дата в формате 07 марта 2018

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

для результата: "гггг-мм"

выберите cast (YEAR () as varchar) + ' - ' + cast(Month () as varchar)

Comments

    Ничего не найдено.