如果当前日期是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);
}
%>
这是我所做的查询,但这是错误的。我需要获取上一个日期,当前日期和下一个日期。
答案 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);
<强> :: 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
的惊人解释方式。它将清除您的逻辑,并将有助于将来参考。
希望能帮到你