如何从 sql 中的日期返回两天?

How to go back two days from a date in sql?

我写了一个 SQL 查询,可以让我获得某些商店的销售额。 我的查询每天早上运行,我想在运行时获取 2 天前的销售额。

例如,如果我的查询在明天早上运行,即 08/12,我想要列 "GP_HEURECREATION" 中的值以“20200612”开头的销售额,以获得整个销售额天.

GP_HEURECREATION 列的格式如下:"20200612 00:00:00" 并且属于 DATE 类型。

我尝试使用 NOW()DATEADD() 但我有 2018 年的值,例如突出。 如何在执行查询前两天获取值?

SELECT 
    T_ETABLISSEMENT, ET1.ET_LIBELLE AS C1, GL_ETABLISSEMENT, 
    GP_HEURECREATION, GP_REFINTERNE, GL_CODEARTICLE, 
    LIBDIM2, LIBDIM1, GL_QTEFACT, GL_PUTTC, 
    (GL_TOTALHT * GP_COTATIONDOS) AS TOTALHTDEV, GL_DPR, GL_DEVISE, 
    GL_NATUREPIECEG, GA_LIBELLE 
FROM 
    GCLIGNEARTDIM  
LEFT OUTER JOIN 
    PGI_LOOKUP(TTETABLISSEMENT) ET1 ON GL_ETABLISSEMENT = ET1.ET_ETABLISSEMENT 
WHERE 
    (GP_HEURECREATION <= DATEADD(day, -2, GETDATE())
    AND (GL_NATUREPIECEG = "FFO") 
    AND GL_ETABLISSEMENT = "20897", "10519", "20267", "26451", "20269", "26078", "28047", "20900", "28085", "24984", "27113", "20268", "19994", "28450", "26876", "24063", "18066", "3220"
ORDER BY 
    GP_REFINTERNE

您现有查询的语法建议 SQL 服务器。如果你想要属于第-2天的记录,你可以这样做:

where gp_heurecreation >= dateadd(day, -2, convert(date, getdate()))
  and gp_heurecreation <  dateadd(day, -1, convert(date, getdate()))

如果 gp_heurecreation 没有时间组件(在 SQL 服务器中,那是 date 数据类型),这更简单:

where gp_heurecreation = dateadd(day, -2, convert(date, getdate()))