当前位置: 首页 > news >正文

SQL关于日期的计算合集

前言

在SQL Server中,时间和日期是常见的数据类型,也是数据处理中重要的一部分。SQL Server提供了许多内置函数,用于处理时间和日期数据类型。这些函数可以帮助我们执行各种常见的任务,例如从日期中提取特定的部分,计算日期之间的差异,以及将日期和时间转换为不同的格式。本文将介绍SQL Server中一些常用的时间和日期函数,以及它们的用法和示例。
在这里插入图片描述

一些常用的函数

GetDate获取当天日期

select getdate()

DateFromParts自定义一个日期

select datefromparts(2023,2,28)

DateFormat转换日期格式

SELECT DATEFORMAT(YourDateColumn, 'YYYY-MM-DD')  AS FormattedDate FROM YourTable

DateAdd函数计算日期偏移后的新日期
SQL中的DATEADD函数用于在给定的日期上添加指定的时间间隔。它的语法如下:

DATEADD(datepart, number, date)

其中,datepart参数指定要添加的时间间隔类型,例如year(年)、quarter(季度)、month(月)、day(天)、hour(小时)、minute(分钟)或second(秒)。number参数指定要添加的时间间隔数量。date参数是要进行添加操作的日期。

下面是一些DateDADD函数使用的示例:

--1. 在当前日期上添加一天:SELECT DATEADD(day, 1, GETDATE())--2. 在当前日期上添加一个月:SELECT DATEADD(month, 1, GETDATE())--3. 在当前日期上添加一小时:SELECT DATEADD(hour, 1, GETDATE())--4. 在指定的日期上添加一周:SELECT DATEADD(week, 1, '2021-01-01')

这些示例中,DATEADD函数会返回一个新的日期,该日期是在给定的日期上添加了指定的时间间隔后得到的。

DateDiff函数算时间差
在SQL中,DATEDIFF函数用于计算两个日期之间的时间间隔。它返回两个日期之间的差值,以指定的时间间隔单位为单位。

DATEDIFF函数的语法如下:

DATEDIFF(datepart, startdate, enddate)

其中,datepart参数指定要计算的时间间隔类型,例如year(年)、quarter(季度)、month(月)、day(天)、hour(小时)、minute(分钟)或second(秒)。startdate和enddate参数是要计算时间间隔的两个日期。

下面是一些示例:

  1. 计算两个日期之间的天数差:
SELECT DATEDIFF(day, '2021-01-01', '2021-02-01')
  1. 计算两个日期之间的小时差:
SELECT DATEDIFF(hour, '2021-01-01 10:00:00', '2021-01-01 12:00:00')
  1. 计算两个日期之间的月数差:
SELECT DATEDIFF(month, '2021-01-01', '2022-01-01')

这些示例中,DATEDIFF函数会返回两个日期之间的差值,以指定的时间间隔单位为单位。

取日期的周、年、月、日等信息

DATEPART函数。DATEPART函数返回一个整数,它是日期的一部分,例如日,月和年。

以下是DATEPART函数的语法:

select DATEPART ( date_part , input_date ) 

DATEPART函数有两个参数:

date_part是要提取的日期的一部分(参见下表中的有效日期部分)。

input_date是提取日期部分的日期。
因此,获取一个日期的WeekNum和WeekDay可以这样

select DATEPART ( wk ,  getdate() )  as wk
select DATEPART ( weekday ,  getdate() )  as wkd

date_part可取值:
在这里插入图片描述

在最前面加上以下语句将每周第一天设置为周一

SET DATEFIRST 1
--
select DATEPART ( wk ,  getdate() )  as wk--
select DATEPART ( weekday , getdate() )  as wkd

获取日期所属的当年的ISO标准周周序(ISO 标准周是一种将一年分为 52 或 53 周的时间计算方法,它是国际标准化组织(ISO)制定的一种时间标准。ISO 标准周的起始日期为每年的第一个周四,即该周的第一天为周四,最后一天为周三)

select DATEPART ( isowk ,  getdate() )  as iso_wk

计算本月第一天,上月第一天,去年本月第一天日期

sql中没有现成的函数实现,我们可以分别计算当前日期的天数d,然后往前移动d天,就可以算出来当前月的第一天的日期了。还一种思路,日期实际上就是数值,我们以0作为基础日期,0表示的日期1970年1月1日1时1分1秒,我们计算当前日期距离基础日期0过去了多少个月,然后在基础日期上移动相应的月份即可。
有了当前日期月份的第一天,移动一个月就得到了上个月的第一天日期,移动一年就得到了去年当月第一天的日期。

-- 本月第一天,0作为基础日期1970-01-01 00:00:00
SELECT DATEADD(MONTH, DATEDIFF(MONTH, 0, GETDATE()), 0) AS '本月第一天';-- 上个月第一天
SELECT DATEADD(MONTH, DATEDIFF(MONTH, 0, GETDATE()) - 1, 0) AS '上个月第一天';-- 上个月最后一天
SELECT DATEADD(DAY, -1, DATEADD(MONTH, DATEDIFF(MONTH, 0, GETDATE()), 0)) AS '上个月最后一天';

计算本周第一天,上周第一天以及上周同期

涉及到周的计算要复杂点,如何计算当前周的第一天,如何计算当前周的前一周的第一天。
对于第一个问题,我们思考先计算当前日期是周几,比方说周三,那说明周一需要往前推2天,我们先用dateparts计算WeekDay,然后用dateadd往前推就好了。
有了本周第一天,再推一个week就出来上周第一天的日期,接着加上这周的周几就能推出上周同期的日期。

DECLARE @Today DATE = GETDATE();
--设置周一为一周的第一天
SET DATEFIRST 1
-- 计算本周第一天
DECLARE @FirstDayOfWeek DATE = DATEADD(DAY, 1 - DATEPART(WEEKDAY, @Today), @Today);-- 计算上周第一天
DECLARE @FirstDayOfLastWeek DATE = DATEADD(WEEK, -1, @FirstDayOfWeek);-- 输出结果
SELECT @FirstDayOfWeek AS '本周第一天', @FirstDayOfLastWeek AS '上周第一天';

相关文章:

SQL关于日期的计算合集

前言 在SQL Server中,时间和日期是常见的数据类型,也是数据处理中重要的一部分。SQL Server提供了许多内置函数,用于处理时间和日期数据类型。这些函数可以帮助我们执行各种常见的任务,例如从日期中提取特定的部分,计…...

shell_44.Linux使用 getopt 命令

使用 getopt 命令 getopt 命令在处理命令行选项和参数时非常方便。它能够识别命令行参数,简化解析过程 1. 命令格式 getopt 命令可以接受一系列任意形式的命令行选项和参数,并自动将其转换成适当的格式。 getopt 的命令格式如下: getopt opt…...

Linux备份Docker的mysql数据并传输到其他服务器保证数据级容灾

目录 简介什么是容灾 ?容灾的分类容灾和备份有什么连系 ? 数据级容灾备份步骤1、scp命令:用于Linux之间复制文件和目录2、编写备份数据库脚本3、crontab定时任务执行脚本4、测试 应用级容灾业务级容灾 简介 为了防止客户系统的数据丢失&…...

【vue+nestjs】qq第三方授权登录【超详细】

项目场景: 前端使用vue3ts 后端使用nestjs 1.申请appId,appKey 1.进入qq互联官网。创建应用 特别注意 1.在填写网站回调域时,需要你线上真实能访问的。不然审核不通过。我的回调地址是前端路由地址 2.如果你想本地调试,回调到你的线上地址。你可以在本…...

经典卷积神经网络 - VGG

使用块的网络 - VGG。 使用多个 3 3 3\times 3 33的要比使用少个 5 5 5\times 5 55的效果要好。 VGG全称是Visual Geometry Group,因为是由Oxford的Visual Geometry Group提出的。AlexNet问世之后,很多学者通过改进AlexNet的网络结构来提高自己的准确…...

系统集成测试(SIT)/系统测试(ST)/用户验收测试(UAT)

文章目录 单元测试集成测试系统测试用户验收测试黑盒测试白盒测试压力测试性能测试容量测试安全测试SIT和UAT的区别 单元测试 英文 unit testing,缩写 UT。测试粒度最小,一般由开发小组采用白盒方式来测试,主要测试单元是否符合“设计”。 …...

Android Gradle8.0以上多渠道写法以及针对不同渠道导入包的方式,填坑!

目录 多渠道的写法 针对多渠道引用不同的包 There was a failure while populating the build operation queue: Could not stat file E:\xxxx\xxxx\xxxx\app\src\UAT\libsUAT\xxx-provider(?)-xx.aar 最近升级了Gradle8.3之后,从Groovy 迁移到 Kotlin&#xff…...

hdlbits系列verilog解答(向量门操作)-14

文章目录 一、问题描述二、verilog源码三、仿真结果 一、问题描述 构建一个具有两个 3 位输入的电路,用于计算两个向量的按位 OR、两个向量的逻辑 OR 以及两个向量的逆 (NOT)。将b反相输出到out_not上半部分,将a 的反相输出到out…...

工厂模式(初学)

工厂模式 1、简单工厂模式 是一种创建型设计模式,旨在通过一个工厂类(简单工厂)来封装对象的实例化过程 运算类 public class Operation { //这个是父类private double num1; //运算器中的两个值private double num2;public double getNu…...

python试题实例

背景: 在外地出差,突然接到单位电话,让自己出一些python考题供新人教育训练使用,以下是10道Python编程试题及其答案: 1.试题:请写一个Python程序,计算并输出1到100之间所有偶数的和。 答案&am…...

Java Heap Space问题解析与解决方案(InsCode AI 创作助手)

Heap Space问题是Java开发中常见的内存溢出问题之一,我们需要理解其原因和表现形式,然后通过优化代码、增加JVM内存和使用垃圾回收机制等方法来解决。 一、常见报错 java.lang.OutOfMemoryError: Java heap space二、Heap Space问题的原因 对象创建过…...

基于遥感影像的分类技术(监督/非监督和面向对象的分类技术)

遥感图像分类技术 “图像分类是将土地覆盖类别分配给像素的过程。例如,类别包括水、城市、森林、农业和草原。”前言 – 人工智能教程 什么是遥感图像分类? 遥感图像分类技术的三种主要类型是: 无监督图像分类监督图像分类基于对象的图像分析…...

插入兄弟元素 insertAfter() 方法

insertAfter() 方法在被选元素后插入 HTML 元素。 提示&#xff1a;如需在被选元素前插入 HTML 元素&#xff0c;请使用 insertBefore() 方法。 语法 $(content).insertAfter(selector)例子&#xff1a; $("<span>Hello world!</span>").insertAfter(…...

【C++项目】高并发内存池第二讲中心缓存CentralCache框架+核心实现

CentralCache 1.框架介绍2.核心功能3.核心函数实现介绍3.1SpanSpanList介绍3.2CentralCache.h3.3CentralCache.cpp3.4TreadCache申请内存函数介绍3.5慢反馈算法 1.框架介绍 回顾一下ThreadCache的设计&#xff1a; 如图所示&#xff0c;ThreadCache设计是一个哈希桶结构&…...

Git基础教程

一、Git简介 1、什么是Git&#xff1f; Git是一个开源的分布式版本控制系统&#xff0c;用于敏捷高效地处理任何或大或小的项目。 Git是Linus Torvalds为了帮助管理Linux内核开发而开发的一个开放源代码的版本控制软件。 Git与常用的版本控制工具CVS、Subversion等不同&#…...

stm32外部时钟为12MHZ,修改代码适配

代码默认是8MHZ的&#xff0c;修改2个地方&#xff1a; 第一个地方是这个文件的这里&#xff1a; 第二个地方是找到这个函数&#xff1a; 修改第二个地方的这里&#xff1a;...

【数据结构】八大排序

目录 1. 排序的概念及其作用 1.1 排序的概念 1.2 排序运用 1.3 常见的排序算法 2. 常见排序算法的实现 2.1 插入排序 2.1.1 基本思想 2.1.2 直接插入排序 2.1.3 希尔排序&#xff08;缩小增量排序&#xff09; 2.2 选择排序 2.2.1 基本思想 2.2.2 直接选择排序 2.2…...

MYSQL(事务+锁+MVCC+SQL执行流程)理解

一)事务的特性: 一致性:主要是在数据层面来说&#xff0c;不能说执行扣减库存的操作的时候用户订单数据却没有生成 原子性:主要是在操作层面来说&#xff0c;要么操作完成&#xff0c;要么操作全部回滚&#xff1b; 隔离性:是自己的事务操作自己的数据&#xff0c;不会受到到其…...

解密一致性哈希算法:实现高可用和负载均衡的秘诀

解密一致性哈希算法&#xff1a;实现高可用和负载均衡的秘诀 前言第一&#xff1a;分布式系统中的数据分布问题&#xff0c;为什么需要一致性哈希算法第二&#xff1a;一致性hash算法的原理第三&#xff1a;一致性哈希算法的优点和局限性第四&#xff1a;一致性哈希算法的安全性…...

Python脚本:让工作自动化起来

Python是一种流行的编程语言&#xff0c;以其简洁和易读性而闻名。它提供了大量的库和模块&#xff0c;使其成为自动化各种任务的绝佳选择。 本文将探讨Python脚本及其代码&#xff0c;可以帮助您自动化各种任务并提高工作效率。无论您是开发人员、数据分析师还是只是想简化工…...

[2025CVPR]DeepVideo-R1:基于难度感知回归GRPO的视频强化微调框架详解

突破视频大语言模型推理瓶颈,在多个视频基准上实现SOTA性能 一、核心问题与创新亮点 1.1 GRPO在视频任务中的两大挑战 ​安全措施依赖问题​ GRPO使用min和clip函数限制策略更新幅度,导致: 梯度抑制:当新旧策略差异过大时梯度消失收敛困难:策略无法充分优化# 传统GRPO的梯…...

ES6从入门到精通:前言

ES6简介 ES6&#xff08;ECMAScript 2015&#xff09;是JavaScript语言的重大更新&#xff0c;引入了许多新特性&#xff0c;包括语法糖、新数据类型、模块化支持等&#xff0c;显著提升了开发效率和代码可维护性。 核心知识点概览 变量声明 let 和 const 取代 var&#xf…...

智能仓储的未来:自动化、AI与数据分析如何重塑物流中心

当仓库学会“思考”&#xff0c;物流的终极形态正在诞生 想象这样的场景&#xff1a; 凌晨3点&#xff0c;某物流中心灯火通明却空无一人。AGV机器人集群根据实时订单动态规划路径&#xff1b;AI视觉系统在0.1秒内扫描包裹信息&#xff1b;数字孪生平台正模拟次日峰值流量压力…...

3-11单元格区域边界定位(End属性)学习笔记

返回一个Range 对象&#xff0c;只读。该对象代表包含源区域的区域上端下端左端右端的最后一个单元格。等同于按键 End 向上键(End(xlUp))、End向下键(End(xlDown))、End向左键(End(xlToLeft)End向右键(End(xlToRight)) 注意&#xff1a;它移动的位置必须是相连的有内容的单元格…...

腾讯云V3签名

想要接入腾讯云的Api&#xff0c;必然先按其文档计算出所要求的签名。 之前也调用过腾讯云的接口&#xff0c;但总是卡在签名这一步&#xff0c;最后放弃选择SDK&#xff0c;这次终于自己代码实现。 可能腾讯云翻新了接口文档&#xff0c;现在阅读起来&#xff0c;清晰了很多&…...

脑机新手指南(七):OpenBCI_GUI:从环境搭建到数据可视化(上)

一、OpenBCI_GUI 项目概述 &#xff08;一&#xff09;项目背景与目标 OpenBCI 是一个开源的脑电信号采集硬件平台&#xff0c;其配套的 OpenBCI_GUI 则是专为该硬件设计的图形化界面工具。对于研究人员、开发者和学生而言&#xff0c;首次接触 OpenBCI 设备时&#xff0c;往…...

论文阅读笔记——Muffin: Testing Deep Learning Libraries via Neural Architecture Fuzzing

Muffin 论文 现有方法 CRADLE 和 LEMON&#xff0c;依赖模型推理阶段输出进行差分测试&#xff0c;但在训练阶段是不可行的&#xff0c;因为训练阶段直到最后才有固定输出&#xff0c;中间过程是不断变化的。API 库覆盖低&#xff0c;因为各个 API 都是在各种具体场景下使用。…...

Chrome 浏览器前端与客户端双向通信实战

Chrome 前端&#xff08;即页面 JS / Web UI&#xff09;与客户端&#xff08;C 后端&#xff09;的交互机制&#xff0c;是 Chromium 架构中非常核心的一环。下面我将按常见场景&#xff0c;从通道、流程、技术栈几个角度做一套完整的分析&#xff0c;特别适合你这种在分析和改…...

第一篇:Liunx环境下搭建PaddlePaddle 3.0基础环境(Liunx Centos8.5安装Python3.10+pip3.10)

第一篇&#xff1a;Liunx环境下搭建PaddlePaddle 3.0基础环境&#xff08;Liunx Centos8.5安装Python3.10pip3.10&#xff09; 一&#xff1a;前言二&#xff1a;安装编译依赖二&#xff1a;安装Python3.10三&#xff1a;安装PIP3.10四&#xff1a;安装Paddlepaddle基础框架4.1…...

AxureRP-Pro-Beta-Setup_114413.exe (6.0.0.2887)

Name&#xff1a;3ddown Serial&#xff1a;FiCGEezgdGoYILo8U/2MFyCWj0jZoJc/sziRRj2/ENvtEq7w1RH97k5MWctqVHA 注册用户名&#xff1a;Axure 序列号&#xff1a;8t3Yk/zu4cX601/seX6wBZgYRVj/lkC2PICCdO4sFKCCLx8mcCnccoylVb40lP...