Дата начала SQL - это текущий день, тогда как дата окончания - 1 месяц назад, даже если не с первого по последний месяц - PullRequest
0 голосов
/ 20 сентября 2010

Хорошо, я пытаюсь написать запрос, который говорит, получить текущую дату и сделать ее датой начала.Затем я хочу вернуться на месяц назад от этой текущей даты для EndDate.Можно ли сделать это?Как если бы это было 9-15-2010 в качестве даты начала, могу ли я вернуться на месяц назад к этому 8-15-2010 или это невозможно… что бы вы сделали для 9-20-2010 в качестве начала?дата с каждого месяца имеет разное количество дней в нем?Иначе, если это невозможно, как еще я могу это сделать?Отчет всегда будет выходить 25-го числа месяца, так что есть идеи?Мне нужно переходить с 25 числа месяца назад .... Я могу получить несколько дублирующих записей между месяцами, если это необходимо, но меньше, очевидно, лучше

Сейчас я использую это:

DECLARE @StartDate DATETIME,
 @EndDate DATETIME;

SET @StartDate = DATEADD(m,-1,GETDATE());
SET @EndDate = DATEADD(m, 1, @StartDate);

Это работает?

Кроме того, как бы я тогда сказал, что мой AuditInsertTimestamp находится между @Start adn @EndDate?

В настоящее время у меня есть это:

AND cvn.[AuditInsertTimestamp] BETWEEN @StartDate AND @EndDate ;

Этовсе еще даю мне даты вроде 7-26-2010, хотя ....

Спасибо!

Ответы [ 2 ]

2 голосов
/ 20 сентября 2010

Это должно работать. Вы пробовали это?

Если это не работает (и есть только 12 тестовых случаев, чтобы проверить, не доверяете ли вы документации), то вы можете пересоздать дату из частей даты .

Вот проблема. Должно быть так:

cvn.[Subject] = 'Field Changed (Plate Type)'
    AND (
        cvn.[Note] LIKE 'Old Type: IRP%New Type: BASE PLATE%'
        OR cvn.[Note] LIKE 'Old Type: Base Plate%New Type: IRP%'
    )
    AND cvn.AuditInsertTimestamp BETWEEN GETDATE() AND DATEADD(MONTH, -1, GETDATE()) 

И имеет точность над ИЛИ, поэтому вы выбирали что-нибудь со старым типом: IRP или в правильном диапазоне дат (со старым типом: базовая пластина)

0 голосов
/ 20 сентября 2010

На основании вашего комментария:

Ну, это используется для выбора записей.Поэтому, если я запускаю его 25 числа, мне нужно 30 дней назад, тогда мое поле AuditInsertTimestamp должно быть между этими двумя датами.

Я думаю, вам нужно сделать что-то вроде этого:

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...