如何在指定日期前一天获得?

sky*_*oor 13 sql

假设我有一个日期2010-07-29.现在我想查看前一天的结果.怎么做

例如,

SELECT * 
  from table 
 where date = date("2010-07-29")
Run Code Online (Sandbox Code Playgroud)

前一天如何做而不更改字符串"2010-07-29"?

我搜索并从网上得到一些建议,我试过了

SELECT * 
  from table 
 where date = (date("2010-07-29") - 1 Day)
Run Code Online (Sandbox Code Playgroud)

但失败了.

OMG*_*ies 19

MySQL的

SELECT * 
  FROM TABLE t
 WHERE t.date BETWEEN DATE_SUB('2010-07-29', INTERVAL 1 DAY)
                  AND '2010-07-29'
Run Code Online (Sandbox Code Playgroud)

如果要添加一天(并反转BETWEEN参数),请将DATE_SUB更改为DATE_ADD.

SQL Server

SELECT *
  FROM TABLE t
 WHERE t.date BETWEEN DATEADD(dd, -1, '2010-07-29')
                  AND '2010-07-29'
Run Code Online (Sandbox Code Playgroud)

神谕

SELECT *
  FROM TABLE t
 WHERE t.date BETWEEN TO_DATE('2010-07-29', 'YYYY-MM-DD') - 1
                  AND TO_DATE('2010-07-29', 'YYYY-MM-DD')
Run Code Online (Sandbox Code Playgroud)

我使用了BETWEEN,因为该date列可能是DATETIME(在MySQL和SQL Server上,与Oracle上的DATE相比),其中包括时间部分,因此等于意味着值必须完全相等.这些查询为您提供了一天的时间.