获取一年前的今天日​​期

Posted

技术标签:

【中文标题】获取一年前的今天日​​期【英文标题】:Get todays date a year ago 【发布时间】:2019-04-10 22:50:16 【问题描述】:

我有一个脚本,我需要今天的日期,但从一年前开始,但我还需要它与时间采用以下格式。

 2017-11-07 00:00:00.000

我目前已经到了一个我去年日期不是 00:00:00.000 时间戳的地方。

select  DATEADD(year, -1, GETDATE())

这将返回运行查询的时间。

 2017-11-07 13:37:10.770

这是一个 where 子句,因为我需要从去年的今天日期获取一些数据,因此寻找一个 where 子句,该子句从去年午夜的这个日期开始,到 23:00:00.000 结束

适用于运行 SQL Server 2005 的客户端。

【问题讨论】:

Sql Server 2005 不再受支持。事实上,对 2008 的扩展支持即将结束 - 所以您最好告诉您的客户他们应该升级到现代版本的 SQL Server。\ 已告知客户。但是我不管理他们的 IT 预算或项目。 你有没有想过闰年应该如何发挥作用?如果一年前的今天不存在怎么办?一年前的昨天的日期是否比一年前的今天早两天有关系吗?等等。 @Damien_The_Unbeliever 同意您的观点,但是我们被告知这是一个 6 个月的解决方案,直到实施新的报告工具。所以我们不必担心这个 是的,他们显然不会让事情停留的时间比他们应该的时间长:-) 【参考方案1】:

尝试使用:

CONVERT(DateTime, DATEDIFF(DAY, 0, DATEADD(year, -1, GETDATE())))

这里有一个查询来查看它的实际效果:

SELECT
    GETDATE() AS today,
    DATEADD(year, -1, GETDATE()) AS today_last_year,  -- what you already have
    CONVERT(DateTime, DATEDIFF(DAY, 0, DATEADD(year, -1, GETDATE()))) AS
        today_last_year_midnight;

返回(截至撰写此答案时):

【讨论】:

这很好用,我想知道我如何将它设置在另一端到 23:00:00.000 @ThisIsLegend1016:SELECT DATEADD(hour, 23, DATEADD(d,0,DATEDIFF(d,0, DATEADD(year, -1, GETDATE()))))。 SQL 可以如此“可读” @ThisIsLegend1016,很高兴您找到了答案。请花点时间单击答案左侧的灰色复选标记,将其标记为您接受的答案。它让其他用户知道该问题有答案,并奖励回答的用户一些信誉积分。你也会得到一些。

以上是关于获取一年前的今天日​​期的主要内容,如果未能解决你的问题,请参考以下文章

当半年不碰的webpack + vuejs项目重见天日时遇到的神坑!

mysql数据库按周统计

一年的java自学回顾

入职一年

获取星期一和星期日等。对于任何日期作为 Unix 中的参数一周

工作一年的成长