2013-08-02 3 views
-2

Мне нужно проверить информацию о счете с рядом дат.Использование функций даты SQL для автоматизации запроса

, т. Е .: 07-01-2013 по 07-31-2013.

Я обычно использовал бы запрос select с между функцией. Но теперь я хочу, чтобы система распознавала диапазон автоматически на основе системной даты. Мне нужен запрос, чтобы в принципе думать так. Сегодня 2 августа. Я должен захватить все счета-фактуры, которые выпадают между 1 и 2 августа. Через 10 дней. Система по-прежнему признает, что это август, и дайте мне счета-фактуры, которые выпадают с 1-го по 12-е августа. Можно ли это сделать с помощью функций Date? Также; У меня должна быть такая же логика и для предыдущих лет.

ответ

1

Вы можете сделать это довольно легко с математикой даты.

select * 
from mytable 
where 
    dt >= DATEADD(MONTH,DATEDIFF(MONTH,0,GETDATE()),0) --Beg of current month 
    and dt < DATEADD(MONTH,1,DATEADD(MONTH,DATEDIFF(MONTH,0,GETDATE()),0)) --Beg. of next month 

предыдущие периоды:

select * 
from mytable 
where 
    dt >= DATEADD(MONTH,-1,DATEADD(MONTH,DATEDIFF(MONTH,0,GETDATE()),0)) --Beg last month 
    and dt < DATEADD(MONTH,DATEDIFF(MONTH,0,GETDATE()),0) --Beg current month 
+0

Я обновил свой код, чтобы отразить предшествующий период, а также. –

1
SELECT * 
FROM YourTable 
WHERE DateColumn >= DATEADD(MONTH,DATEDIFF(MONTH,0,GETDATE()),0) 
AND DateColumn <= DATEADD(DAY,DATEDIFF(DAY,0,GETDATE()),0) 
0
WHERE YourDateColumn Between DATEADD(d, -1 * DAY(GETDATE()), GETDATE()) And GETDATE() 

познакомит вас 1-го по сегодняшний день

Смежные вопросы