在sql的日期范围中选择动态日期
这是我的查询的日期范围:在sql的日期范围中选择动态日期,sql,datetime,where-clause,date-arithmetic,Sql,Datetime,Where Clause,Date Arithmetic,这是我的查询的日期范围: WHERE date BETWEEN 20190101 AND [here date should come as last year YTD -1] 例如,如果我们今天使用这个查询(20201106)(格式:yyyymmdd),那么第二个日期应该是20191105 为了更清楚:当我今天运行此查询时(20201106),我的查询应该从日期范围获取结果: WHERE date BETWEEN 20190101 AND 20191105 WHERE
WHERE
date BETWEEN 20190101 AND [here date should come as last year YTD -1]
例如,如果我们今天使用这个查询(20201106)(格式:yyyymmdd),那么第二个日期应该是20191105
为了更清楚:当我今天运行此查询时(20201106),我的查询应该从日期范围获取结果:
WHERE
date BETWEEN 20190101 AND 20191105
WHERE
date BETWEEN 20190101 AND 20191106
当我明天运行此查询时(20201107),我的查询应该从日期范围中获取结果:
WHERE
date BETWEEN 20190101 AND 20191105
WHERE
date BETWEEN 20190101 AND 20191106
我该怎么做
有人能帮忙吗?您可以使用dateadd()
和getdate()
或者其他可以获取当前数据库时间的函数,但这应该可以工作。
另外,请记住使用convert()
将日期格式修改为所需格式。您可以使用dateadd()
和getdate()
WHERE
DATEADD(YEAR,-1, GETDATE()) -- One Day Before Today in the Last Year
AND
DATEADD(yy, DATEDIFF(yy, 0, DATEADD(YEAR,-1, GETDATE())), 0) AS StartOfYear -- The Day 1 of the Last Year
或者其他可以获取当前数据库时间的函数,但这应该可以工作。
另外,请记住使用
convert()
将日期格式修改为您想要的格式。我将其表述为:
WHERE
DATEADD(YEAR,-1, GETDATE()) -- One Day Before Today in the Last Year
AND
DATEADD(yy, DATEDIFF(yy, 0, DATEADD(YEAR,-1, GETDATE())), 0) AS StartOfYear -- The Day 1 of the Last Year
where date >= datefromparts(year(getdate()) - 1, 1, 1)
and date < dateadd(year, -1, convert(date, getdate()))
where date>=datefromparts(年份(getdate())-1,1,1)
和日期<日期添加(年份,-1,转换(日期,getdate())
此过滤器从去年年初和1年零1天前开始过滤
注意,我将过滤策略更改为使用半开间隔,而不是在之间使用。这在某种程度上更加灵活,因为它可以正确处理日期中的时间组件(如果有),并简化偏移逻辑
还请注意,getdate()
有一个时间组件,需要在偏移时删除该组件以实现逻辑。我将其表述为:
where date >= datefromparts(year(getdate()) - 1, 1, 1)
and date < dateadd(year, -1, convert(date, getdate()))
where date>=datefromparts(年份(getdate())-1,1,1)
和日期<日期添加(年份,-1,转换(日期,getdate())
此过滤器从去年年初和1年零1天前开始过滤
注意,我将过滤策略更改为使用半开间隔,而不是在
之间使用。这在某种程度上更加灵活,因为它可以正确处理日期中的时间组件(如果有),并简化偏移逻辑
还要注意,getdate()
有一个时间组件,需要在偏移时删除该组件以实现逻辑。请添加数据库平台的标记,因为每个DBMS中的日期函数不同。一般来说,您应该查找数据库管理系统的日期函数参考,并找到合适的函数来使用。请添加数据库平台的标记,因为每个数据库管理系统中的日期函数不同。通常,您应该查找DBMS的日期函数引用,并找到一个合适的函数来使用。