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);

}

%>

这是我所做的查询,但它是错误的。我需要获取上一个日期、当前日期和下一个日期。

原文由 halfe 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 545
2 个回答

使用 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 演示

::输出::

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

原文由 Saharsh Shah 发布,翻译遵循 CC BY-SA 3.0 许可协议

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

当前的日期

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

NEXT DAY DATE (将 1 添加到 dateadd 参数提前一天)

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

YESTERDAY DATE (从 datediff 参数中删除 1 以返回一天)

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

如果您通过 此处 的链接,您将获得一种惊人的解释方式来获得 date 。它将清除您的逻辑,并且对将来的参考也很有用。

希望对你有帮助

原文由 Nad 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题