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 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'
Это также может быть полезно.
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,'')
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
Comments