如何提取从本月第一天到今天的数据 -1

How to extract data from 1st day of the month till today's date -1

我正在尝试提取所有具有从该月的第一天到昨天的日期时间的数据,例如:

01/06/2017 - 22/06/2017

我用过这个代码:

Select *
from testDb.dbo.Company1
WHERE MONTH(CreatedDate) = MONTH(dateadd(dd, -1, GetDate()))  AND 
      YEAR(CreatedDate) = YEAR(dateadd(dd, -1, GetDate()))

编辑

我的CreatedDate列,它的数据类型是DateTime。不确定是否有任何区别。

但这会打印出 01/06/2017 - 23/06/2017 的所有数据。我应该写什么代码来打印所有数据直到(今天的日期-1)?感谢您的帮助,祝您有美好的一天!

我认为这个 where 子句符合您的要求:

where createdDate >= dateadd(month, 0, datediff(month, 0, getdate())) and
      createdDate < cast(getdate() as date)

与其分别比较月份和年份部分,不如尝试使用两个完整数据点的范围来限定结果集,一个是月初,另一个是昨天。

SELECT *
FROM testDb.dbo.Company1
WHERE
    CreatedDate BETWEEN DATEADD(month, DATEDIFF(month, 0, GETDATE()), 0) AND
                        DATEADD(day, -1, CAST(GETDATE() AS date))

Demo

当今天是本月的第一天时,这将不起作用

SELECT *
FROM your_table
WHERE createdDate BETWEEN 
CAST('1 ' + DateName(month, GetDate()) + ' ' +Year(GetDate()) as datetime) 
AND DATEADD(day, -1, GETDATE() )

试试这个查询 --

SELECT *
FROM testDb.dbo.Company1
WHERE DATEPART(Month, CreatedDate) = Datepart(Month, GETDATE())
    AND DATEPART(Day, CreatedDate) <= DATEPART(Day, Getdate())

编辑:

SELECT *
    FROM testDb.dbo.Company1
    WHERE DATEPART(Month, CreatedDate) = Datepart(Month, GETDATE())
        AND DATEPART(Day, CreatedDate) < DATEPART(Day, Getdate())

编辑 2:

SELECT CONVERT(VARCHAR(30),CreatedDate,120) As [CreatedDate]
    FROM testDb.dbo.Company1
    WHERE DATEPART(Month, CreatedDate) = Datepart(Month, GETDATE())
        AND DATEPART(Day, CreatedDate) < DATEPART(Day, Getdate())