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);
}
%>
Это запрос, который я сделал, но он ошибочен. Мне нужно получить предыдущую дату, текущую дату и следующую дату.
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