获取当前月份以外所有日期值的查询结果

时间:2019-02-07 22:04:28

标签: sql sql-server

我需要获取不包括当月和今年在内的数据值。

我目前拥有的是以下

class Second_Class {

    function __construct() {

        // do same other stuff
    }

    function do_stuff() {

        foreach( ctp()->get_ctp_taxs() as $tax_name => $tax_object ) {

            // do stuff

        }
    }
}

显然,这也将排除我想避免的2018年当月数据。

我已经在线检查了其他解决方案,但未能应用。

2 个答案:

答案 0 :(得分:3)

我会简单地做:

where created_at < dateadd(day, 1 - day(getdate()), cast(getdate as date))

这也是可预测的-满口表示可以将索引用于查询。

您也可以这样写:

where created_at < datefromparts(year(getdate()), month(getdate()), 1)

这实际上更好更清楚。

答案 1 :(得分:1)

与您的问题相关的正确WHERE子句将是

   WHERE created_at BETWEEN '2018-01-01' AND (DATEADD(dd, -1 ,DATEADD(mm,DATEDIFF(mm,0,GETDATE()),0)))