Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 如何获取上一个月的数据和当月的最新数据_Sql_Sql Server_Tsql_Sql Server 2008 - Fatal编程技术网

Sql 如何获取上一个月的数据和当月的最新数据

Sql 如何获取上一个月的数据和当月的最新数据,sql,sql-server,tsql,sql-server-2008,Sql,Sql Server,Tsql,Sql Server 2008,在编写查询时需要帮助以获取上个月的数据以及本月至今的数据 如果今天的日期是2011年3月23日,我需要检索上个月的数据以及截至今天的数据(指2011年3月23日) 如果日期为2011年4月3日,数据应包括3月份数据和截至2011年4月3日的数据 谢谢 沙什拉 后退一个月,减去当前日期的天数,再加上一天 WHERE DateField <= GetDate() AND DateField >= DateAdd( mm, -1, Dat

在编写查询时需要帮助以获取上个月的数据以及本月至今的数据

如果今天的日期是2011年3月23日,我需要检索上个月的数据以及截至今天的数据(指2011年3月23日)

如果日期为2011年4月3日,数据应包括3月份数据和截至2011年4月3日的数据

谢谢

沙什拉


后退一个月,减去当前日期的天数,再加上一天

WHERE  
  DateField <= GetDate() AND
  DateField >= DateAdd(
      mm, 
      -1, 
      DateAdd(dd, -1*DatePart(dd, GetDate())+1, GetDate())
  )
所以很可能

WHERE dateColumn >= DATEADD(month, datediff(month, 0, getdate())-1, 0)
  AND dateColumn <  DATEADD(DAY, DATEDIFF(day, 0, getdate()), 1)
其中dateColumn>=DATEADD(月,datediff(月,0,getdate())-1,0)
和dateColumn
从表1中选择第1列、第2列
其中DateColumn=DATEADD(dd,-(DAY)(DATEADD(mm,1,GetDate())-1),DATEADD(mm,-1,GetDate()))

编辑:+1至Russel Steen。在我知道他已经发帖之前,我已经发帖了。

不准确-第二条给出了“2011-02-01 10:55:49.160”很好,我喜欢datediff解决方案。谢谢你给我链接。真的很有用。
DateField >= Cast( Floor( Cast( (DateAdd(
          mm, 
          -1, 
          DateAdd(dd, -1*DatePart(dd, GetDate())+1, GetDate())
      )) AS FLOAT ) ) AS DATETIME )
Today including time info  : getdate()
Today without time info    : DATEADD(DAY, DATEDIFF(day, 0, getdate()), 0)
Tomorrow without time info : DATEADD(DAY, DATEDIFF(day, 0, getdate()), 1)
Beginning of current month : DATEADD(month, datediff(month, 0, getdate()), 0)
Beginning of last month    : DATEADD(month, datediff(month, 0, getdate())-1, 0)
WHERE dateColumn >= DATEADD(month, datediff(month, 0, getdate())-1, 0)
  AND dateColumn <  DATEADD(DAY, DATEDIFF(day, 0, getdate()), 1)
Select Column1, Column2 From Table1
Where DateColumn <= GetDate() AND 
DateColumn >= DATEADD(dd, - (DAY(DATEADD(mm, 1, GetDate())) - 1), DATEADD(mm, - 1, GetDate()))