返回顶部
首页 > 资讯 > 数据库 >sql server编写通用脚本如何实现获取一年前日期
  • 476
分享到

sql server编写通用脚本如何实现获取一年前日期

2024-04-02 19:04:59 476人浏览 泡泡鱼
摘要

这篇文章给大家分享的是有关SQL Server编写通用脚本如何实现获取一年前日期的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。问题:  在数据库编程开发中,有时需要获取一年前的日

这篇文章给大家分享的是有关SQL Server编写通用脚本如何实现获取一年前日期的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。

问题:

  在数据库编程开发中,有时需要获取一年前的日期,以便以此为时间的分界点,查询其前后对应的数据量。例如:

1. 想查询截止到一年前当天0点之前的数据量,以及一年前当天0点开始到现在的数据量。
2. 想查询截止到一年前当天24点之前的数据量,以及一年前当天24点开始到现在的数据量。
3. 想查询截止到一年前当月1日0点之前的数据量,以及一年前当月1日0点开始到现在的数据量。
4. 想查询截止到一年前当月最后一天24点之前的数据量,以及一年前当月最后一天24点开始到现在的数据量。

  以上这四种情况的具体查询场景,有arcHive数据脚本开发之前对数据库数据量的分布情况进行统计等,也有根据当前日期动态计算一年来的增量增幅情况等。

  如果每次接到这样的需求需要获取一年前日期,然后每次重新思考怎么去实现肯定是不明智的,或者说公司内已经有人写了脚本实现,但其他同事遇到相同的问题,又重新构思一次,这样就比较浪费时间和精力,耗在这个细节上一些精力,有点像要做饭可是没有米就要先去买米的感觉,而且容易造成不同人写的脚本不统一,不利于代码规范化标准化的原则,不同的人跟进的时候还要去想想之前的人写的是什么逻辑。而且重新开发脚本的话,又需要重新进行自测,不利于提高工作效率。

解决方案:

  首先简单介绍一下基本的知识点:

getdate()是获取当前日期;
dateadd可以对日期进行增减,在这里用来对年份减少1【dateadd(year, -1, 日期字符串)】,也可以用来对月份增加1【dateadd(month, 1, 日期字符串)】;
convert可以对日期进行字符串截取转换操作,在这里可以只截取形如2019-07-17的年月日【convert(varchar(10), 日期字符串, 120))】,也可以只截取形如2019-07的年月部分【convert(varchar(7), 日期字符串, 120))】。  

然后就是针对上面4个问题对应的4个解决方法:

1. 最简单,对当前日期进行减少1年的运算,然后只截取年月日。
2. 先对当前日期进行增加1天的运算,然后再减少1年,最后只截取年月日。
3. 先对当前日期进行截取年月操作,然后再指定为当月01日,再减少1年,最后只截取年月日。
4. 先对当前日期进行截取年月操作,然后再指定为当月01日,再减少1年,并加上1个月,最后只截取年月日。

  最后就可以直接在查询脚本条件中使用这个时间节点:

查询统计时间节点之前:select count(*) from 表 where 时间字段 < @datePoint

查询统计时间节点开始到现在:select count(*) from 表 where 时间字段 >= @datePoint

脚本:


--1.截止到一年前当天0点
declare @datePoint datetime = convert(varchar(10), dateadd(year, -1, getdate()), 120)
select @datePoint as DatePoint
Go
--2.截止到一年前当天24点
declare @datePoint datetime = convert(varchar(10), dateadd(year, -1, dateadd(day, 1, getdate())), 120)
select @datePoint as DatePoint
go
--3.截止到一年前当月1日0点
declare @datePoint datetime = convert(varchar(10), dateadd(year, -1, convert(varchar(7), getdate(), 120) + '-01'), 120)
select @datePoint as DatePoint
go
--4.截止到一年前当月最后一天24点
declare @datePoint datetime = convert(varchar(10), dateadd(month, 1, dateadd(year, -1, convert(varchar(7), getdate(), 120) + '-01')), 120)
select @datePoint as DatePoint
go

脚本运行结果:

sql server编写通用脚本如何实现获取一年前日期

感谢各位的阅读!关于“sql server编写通用脚本如何实现获取一年前日期”这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,让大家可以学到更多知识,如果觉得文章不错,可以把它分享出去让更多的人看到吧!

您可能感兴趣的文档:

--结束END--

本文标题: sql server编写通用脚本如何实现获取一年前日期

本文链接: https://lsjlt.com/news/55734.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • sql server编写通用脚本如何实现获取一年前日期
    这篇文章给大家分享的是有关sql server编写通用脚本如何实现获取一年前日期的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。问题:  在数据库编程开发中,有时需要获取一年前的日...
    99+
    2024-04-02
  • php如何获取当前日期是一年的第几周
    这篇文章主要讲解了“php如何获取当前日期是一年的第几周”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“php如何获取当前日期是一年的第几周”吧!在php中,可以利用date()函数配合“W”...
    99+
    2023-06-29
  • sql server编写archive通用模板脚本如何实现自动分批删除数据
    这篇文章主要介绍了sql server编写archive通用模板脚本如何实现自动分批删除数据,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。做...
    99+
    2024-04-02
  • chatgpt赋能python:如何使用Python获取前一天的日期
    如何使用Python获取前一天的日期 在Python编程中,经常会遇到需要获取日期的情况,例如在日志记录、数据分析等方面。有时候,我们需要获取前一天的日期,以便于统计某些数据。那么,如何使用Pytho...
    99+
    2023-09-20
    chatgpt 计算机
  • 如何实现Shell脚本遍历一个日期范围
    本篇内容主要讲解“如何实现Shell脚本遍历一个日期范围”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“如何实现Shell脚本遍历一个日期范围”吧!代码如下:#!/usr/bin/env bash...
    99+
    2023-06-09
  • 如何编写Shell脚本实现检测某ip网络畅通情况
    这篇文章主要介绍“如何编写Shell脚本实现检测某ip网络畅通情况”,在日常操作中,相信很多人在如何编写Shell脚本实现检测某ip网络畅通情况问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”如何编写Shell...
    99+
    2023-06-09
  • sql server使用公用表表达式CTE通过递归方式如何编写通用函数自动生成连续数字和日期
    sql server使用公用表表达式CTE通过递归方式如何编写通用函数自动生成连续数字和日期,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。问题...
    99+
    2024-04-02
  • 如何使用moment.js获取本周、前n周、后n周开始结束日期及动态计算周数
    目录引言一、获取本周一和周日日期二、获取前 i 周的周一和周日日期三、获取后 i 周的周一和周日日期四、获取制定日期区间的周数(不跨年)五、第一学期还涉及到跨年的情况,处理起来相对复...
    99+
    2024-04-02
  • Android编程如何实现悬浮窗获取并显示当前内存使用量
    这篇文章给大家分享的是有关Android编程如何实现悬浮窗获取并显示当前内存使用量的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。本文实例讲述了Android编程实现悬浮窗获取并显示当前内存使用量的方法,具体如下:...
    99+
    2023-05-30
    android
  • Jmeter如何通过OS进程取样器调用Python脚本实现参数互传
    这篇文章主要介绍了Jmeter如何通过OS进程取样器调用Python脚本实现参数互传,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。 Python中 sys.argv的用法解释...
    99+
    2023-06-29
  • sql server如何使用临时存储过程实现使用参数添加文件组脚本复用
    这篇文章主要介绍sql server如何使用临时存储过程实现使用参数添加文件组脚本复用,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!create procedure&nbs...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作