MySQL SQL查询以查找上一个日期、当前日期和下一个日期

声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow 原文地址: http://stackoverflow.com/questions/34554002/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me): StackOverFlow

提示:将鼠标放在中文语句上可以显示对应的英文。显示中英文
时间:2020-08-31 21:31:01  来源:igfitidea点击:

SQL query to find the previous date, current date and next date

mysqlsqldatedatetimeselect

提问by halfe

If the current date is 3/12/2015, then I need to get the files from dates 2/12/2015, 3/12/2015, 4/12/2015. Can anyone tell me an idea for how to do it?

如果当前日期是 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);

}

%>

This is the query I have done, but it's erroneous. I need to get the previous date, current date and next date.

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

回答by Saharsh Shah

Use DATE_ADD()And DATE_SUB()functions:

使用DATE_ADD()DATE_SUB()函数:

Try this:

尝试这个:

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

Check the SQL FIDDLE DEMO

检查SQL FIDDLE 演示

::OUTPUT::

::输出::

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

回答by Sahi

You can use dateAdd function

您可以使用 dateAdd 功能

syntax

句法

DATEADD(datepart,number,date)

i.e for current date

即当前日期

select GETDATE()

for yesterday

昨天

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

for tomorrow

为了明天

select DATEADD(D,1,GETDATE())

so, your query should be like

所以,你的查询应该像

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

回答by hud

Simplest way to get all these datesare as below:-

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

CURRENT DATE

当前的日期

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

NEXT DAY DATE(Adding 1 to the dateaddparameter for one day ahead)

NEXT DAY DATE dateadd提前一天的参数加1)

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

YESTERDAY DATE(Removing 1 from the datediffparameter for one day back)

YESTERDAY DATE (前datediff一天从参数中删除 1 )

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

If you go through the link here, you will get an amazing way of explanation for getting date. It will clear your logic and will be useful for future reference too.

如果你通过这里的链接,你会得到一个惊人的解释方式date。它将清除您的逻辑,也将有助于将来参考。

Hope that helps you

希望能帮到你

回答by Vishnu Babu

current date

当前的日期

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

yesterday

昨天

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

next day

明天

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