【问题标题】:SQL query to find the previous date, current date and next dateSQL查询查找上一个日期、当前日期和下一个日期
【发布时间】:2016-04-05 20:56:58
【问题描述】:

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

}

%>

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

【问题讨论】:

  • 请您尝试按日期-1 天添加订单

标签: mysql sql date datetime select


【解决方案1】:

当前日期

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

昨天

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

第二天

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

【讨论】:

  • 您对next day 的最后一次查询不会在SQL server 2005 中运行,因为Date2005 中不起作用,您可以使用datetime 代替date。休息一切正常。另外,您需要提及date = (.....
【解决方案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 DEMO

::OUTPUT::

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

【讨论】:

  • 这些查询是否有助于查找昨天和明天的文件??我也需要获取当前日期的文件
  • @halfe 上面的查询将为您提供DATE 列、'Date` 列和DATE 列之后1 天的数据。如果Date column id 今天的日期那么上面的查询会返回今天、昨天和明天的数据
  • 你能告诉我如何在SELECT FILE FROM tablename WHERE DATE >= DATE_SUB(CURRENT_DATE(), INTERVAL 1 DAY) AND DATE
  • @halfe 你想做什么?
  • 查询应该返回当前日期、当前日期前一天和当前日期后一天的文件
【解决方案3】:

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

【讨论】:

  • 这些查询是否有助于查找昨天和明天的文件??我也需要获取当前日期的文件
  • 是的。条件是检查昨天到明天的日期。即昨天,今天和明天。
【解决方案4】:

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

当前日期

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) 

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

希望对你有帮助

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-03-05
    • 1970-01-01
    • 1970-01-01
    • 2018-07-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多