Мне нужно получить доступ только к полю Month.Year from Date в SQL Server.
Мне нужно получить доступ только к полю Month.Year from 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/
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'
В моем конкретном случае мне нужно было сократить его до трехбуквенного месяца с двухзначным годом, примерно так:
SELECT LEFT(DATENAME(month, GETDATE()), 3) + '-' + CAST(RIGHT(YEAR(GETDATE()),2) AS nvarchar(2)) AS 'Month-Year'
Моя база данных не поддерживает большинство функций, описанных выше, однако я обнаружил, что это работает:
SELECT * FROM table WHERE SUBSTR(datetime_column, starting_position, number_of_strings)=required_year_and_month;
например:
SELECT SUBSTR(created, 1,7) FROM table;
возвращает год и месяц в формате "гггг-мм"
Получить месяц и год от даты
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 - это столбец типа datetime, и я использую SQL Server 2017 на лазурном сервере.
выберите CONCAT (МЕСЯЦ (GETDATE ()), '.', YEAR (GETDATE ()))
Выход: 5.2020
выберите CONCAT (DATENAME (MONTH, GETDATE ()), '.', YEAR (GETDATE ()))
Выход: май 2020 г.