SQL-запрос для поиска предыдущей даты, текущей даты и следующей даты



Если текущая дата - 3/12/2015, то мне нужно получить файлы с датами 2/12/2015, 3/12/2015, 4/12/2015. Кто - нибудь может подсказать мне, как это сделать?



<%
try
{
Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");


Connection con = DriverManager.getConnection("jdbc:sqlserver://localhost:1433/CubeHomeTrans","sa","softex");

Statement statement = con.createStatement() ;

ResultSet resultset = statement.executeQuery("

select file from tablename
where date >= DATEADD(day, -1, convert(date, GETDATE()))
and date <= DATEADD(day, +1, convert(date, GETDATE()))") ;


while(resultset.next())
{
String datee =resultset.getString("Date");
out.println(datee);
}
}
catch(SQLException ex){
System.out.println("exception--"+ex);

}

%>


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

1552   4  

4 ответов:

Использование DATE_ADD() и еще DATE_SUB() функции:

Попробуйте это:

SELECT FILE, DATE
FROM ForgeRock
WHERE STR_TO_DATE(DATE, '%d/%m/%Y') >= DATE_SUB(CURRENT_DATE(), INTERVAL 1 DAY)
  AND STR_TO_DATE(DATE, '%d/%m/%Y') <= DATE_ADD(CURRENT_DATE(), INTERVAL 1 DAY);

Проверьте SQL FIDDLE DEMO

::Выход::

| file |       DATE |
|------|------------|
|  dda | 31/12/2015 |
|  ass | 01/01/2016 |
|  sde | 02/01/2016 |

Текущая дата

date = (SELECT CONVERT(char(10), GetDate(),126))

Вчера

date = (SELECT dateadd(day,datediff(day,1,GETDATE()),0))

На следующий день

date= SELECT DATEADD(day, 1,(convert(date, GETDATE())))

Вы можете использовать функцию dateAdd

Синтаксис

DATEADD(datepart,number,date)

То есть на текущую дату

select GETDATE()

За вчерашний день

select DATEADD(D,-1,GETDATE())

На завтра

select DATEADD(D,1,GETDATE())

Итак, ваш запрос должен быть похож на

select file from tablename
where date >= DATEADD(D,-1,GETDATE())
and date <= DATEADD(D,1,GETDATE())

Самый простой способ получить все эти даты, как показано ниже: -

ТЕКУЩАЯ ДАТА

SELECT DATEADD(day, DATEDIFF(day, 0, GETDATE()), 0)

Дата на следующий день (добавление 1 к параметру dateadd на один день вперед)

SELECT DATEADD(day, DATEDIFF(day, 0, GETDATE()), 1)

Вчерашняя дата (удаление 1 из параметра datediff на один день назад)

SELECT DATEADD(day, DATEDIFF(day, 1, GETDATE()), 0) 

Если вы пройдете по ссылке здесь, вы получите удивительный способ объяснения получения date. Это прояснит вашу логику и будет полезно в будущем ссылка тоже.

Надеюсь, что это поможет вам

Comments

    Ничего не найдено.