用于查找上一个日期,当前日期和下一个日期的SQL查询

时间:2016-01-01 06:15:10

标签: mysql sql date datetime select

如果当前日期是2015年12月3日,那么我需要从2015年12月12日,2015年3月12日,2015年4月12日的日期获取文件。谁能告诉我如何做到这一点的想法?

<%
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 个答案:

答案 0 :(得分: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

<强> :: OUTPUT ::

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

答案 1 :(得分:0)

当前日期

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

昨天

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

第二天

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

答案 2 :(得分:0)

您可以使用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())

答案 3 :(得分:0)

获取所有日期的最简单方法如下: -

当前日期

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

下一个日期 (提前一天向dateadd参数添加1)

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

昨天日期 (从datediff参数中删除一天后的一天)

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

如果您浏览了here链接,您将获得一种获得date的惊人解释方式。它将清除您的逻辑,并将有助于将来参考。

希望能帮到你