繁体   English   中英

SQL开始日期是当前日期,然后结束日期是1个月前,即使不是从该月的第一天到最后一天

[英]SQL Start date is current day then end date is 1 month ago even if its not from the first to the last of the month

好的,我尝试编写一个查询,说获取当前日期并将其设为开始日期。 然后,我想从当前日期回溯一个月来作为EndDate。 是否有可能做到这一点? 就像开始日期是2010年9月15日,我可以将其从一个月前追溯到2010年8月15日吗?或者这是不可能的....您打算如何开始2010年9月20日因为每个月的日期有不同的天数? 否则,如果这不可能,那么我该怎么办? 该报告将始终在每月的25号发布,因此您有什么想法吗? 我需要从一个月的25日开始。。。如果需要的话,我可以在几个月之间获得一些重复的记录,但是减少记录显然更好

现在我正在使用这个:

DECLARE @StartDate DATETIME,
 @EndDate DATETIME;

SET @StartDate = DATEADD(m,-1,GETDATE());
SET @EndDate = DATEADD(m, 1, @StartDate);

这有用吗?

另外,我怎么说我的AuditInsertTimestamp在@Start和@EndDate之间?

目前我有这个:

AND cvn.[AuditInsertTimestamp] BETWEEN @StartDate AND @EndDate ;

但这仍然给了我2010年7月26日这样的日期。

谢谢!

应该工作。 你试过吗?

如果它不起作用(只有12个测试用例要检查您是否不信任文档),则可以从date部分重新构建日期

这是问题所在。 它应该是这样的:

cvn.[Subject] = 'Field Changed (Plate Type)'
    AND (
        cvn.[Note] LIKE 'Old Type: IRP%New Type: BASE PLATE%'
        OR cvn.[Note] LIKE 'Old Type: Base Plate%New Type: IRP%'
    )
    AND cvn.AuditInsertTimestamp BETWEEN GETDATE() AND DATEADD(MONTH, -1, GETDATE()) 

AND优先于OR,因此您在使用Old Type:IRP或正确的日期范围(使用Old Type:Base Plate)中拾取任何东西

根据您的评论:

好吧,这被用来选择记录。 因此,如果我在25日运行它,则需要30天,然后我的字段AuditInsertTimestamp必须介于这两个日期之间。

我想你需要做这样的事情:

SELECT * FROM Table
WHERE AuditInsertTimestamp BETWEEN GETDATE() AND DATEADD(MONTH, -1, GETDATE())

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM