1

У меня есть представление SQL, которое содержит столбец с датами в формате «2012-06-21 19:44:50.543». Мне нужно ввести условие, чтобы показывать только строки с датами, начинающимися с начала предыдущего месяца. Эта процедура требует использования текущего (встроенного) времени. Также мне нужно, чтобы такой вид обновлялся автоматически каждый месяц. Как я могу это сделать?

1 ответ1

2

Чтобы получить даты, начинающиеся с предыдущего месяца, на основе текущего системного времени, вы будете использовать DATEADD() и GETDATE().

DATEADD возвращает указанную дату с указанным интервалом чисел (целое число со знаком ), добавленным к указанной части даты этой даты.

    DATEADD (datepart , number , date )

GETDATE возвращает текущую системную метку базы данных в качестве значения даты и времени без смещения часового пояса базы данных. Это значение получено из операционной системы компьютера, на котором работает экземпляр SQL Server.

    GETDATE ( )

Чтобы рассчитать даты, которые совпадают с начала прошлого месяца (помните, это пример и может потребоваться изменение с вашим кодом):

SELECT [col1], [col2], [dt] FROM [table]
WHERE [dt] >= convert(varchar,DATEADD(MONTH,-1,
              DATEADD(MONTH,DATEDIFF(MONTH,0,
              getdate()),0)),101)

Пожалуйста, прочитайте также о DATEDIFF() и CONVERT() чтобы понять, как работает форматирование, представленное 101 . Вы можете предпочесть 121 вместо этого.

(Дополнительный источник: статья Терри Аподаки «Даты SQL - первый, текущий, последний день месяца»), которая переместилась со старого адреса на http://v1.terryapodaca.com/2008/01/28/sql-dates-first. -current-last-day-of-month(или вы можете прочитать архивную копию на Wayback Machine).)

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .