首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

SQL -从日期中减去工作日

SQL是结构化查询语言(Structured Query Language)的缩写,是一种用于管理关系型数据库的编程语言。它可以用于创建、修改和查询数据库中的表、视图和存储过程等对象。

从日期中减去工作日是一个常见的需求,可以通过编写SQL语句来实现。以下是一个示例的SQL语句,用于从给定日期中减去指定数量的工作日:

代码语言:txt
复制
-- 假设有一个名为holidays的表,存储了所有的假期日期
-- 假设有一个名为workdays的表,存储了所有的工作日日期

-- 输入参数
DECLARE @inputDate DATE = '2022-01-10'; -- 给定的日期
DECLARE @numOfWorkdays INT = 5; -- 要减去的工作日数量

-- 查询结果
SELECT TOP 1 DATEADD(DAY, -@numOfWorkdays, @inputDate) AS ResultDate
FROM workdays
WHERE workdays.date < @inputDate
  AND workdays.date NOT IN (SELECT date FROM holidays)
ORDER BY workdays.date DESC;

上述SQL语句的执行过程如下:

  1. 首先,声明了两个输入参数:@inputDate表示给定的日期,@numOfWorkdays表示要减去的工作日数量。
  2. 然后,通过查询workdays表,找到给定日期之前的所有工作日日期。
  3. 在查询结果中,排除了holidays表中的假期日期。
  4. 最后,按照工作日日期的降序排序,并选择第一个结果,即减去指定数量工作日后的日期。

这样,就可以通过SQL语句从给定日期中减去指定数量的工作日。

对于这个问题,腾讯云提供了多个相关的产品和服务,例如:

  • 数据库:腾讯云数据库(TencentDB)提供了多种类型的数据库,如云数据库MySQL、云数据库MariaDB、云数据库SQL Server等,可以用于存储和管理数据。
  • 服务器运维:腾讯云服务器(CVM)提供了弹性的云服务器实例,可以进行服务器的部署、管理和监控。
  • 云原生:腾讯云原生应用平台(Tencent Cloud Native Application Platform,TCNAP)提供了一站式的云原生应用开发、部署和运维解决方案。
  • 网络通信:腾讯云网络(Tencent Cloud Network,TCN)提供了高性能、安全可靠的网络通信服务,如云联网、弹性公网IP等。
  • 网络安全:腾讯云安全(Tencent Cloud Security,TCS)提供了全面的网络安全解决方案,包括DDoS防护、Web应用防火墙等。
  • 存储:腾讯云对象存储(Tencent Cloud Object Storage,COS)提供了高可靠、低成本的对象存储服务,适用于各种数据存储需求。
  • 人工智能:腾讯云人工智能(Tencent Cloud Artificial Intelligence,AI)提供了丰富的人工智能服务,如图像识别、语音识别、自然语言处理等。
  • 物联网:腾讯云物联网(Tencent Cloud Internet of Things,IoT)提供了全面的物联网解决方案,包括设备接入、数据管理、应用开发等。
  • 移动开发:腾讯云移动开发(Tencent Cloud Mobile Development,TMD)提供了一站式的移动应用开发解决方案,包括移动后端服务、移动推送等。
  • 区块链:腾讯云区块链(Tencent Cloud Blockchain,TCB)提供了安全、高效的区块链服务,适用于各种场景,如供应链金融、溯源管理等。
  • 元宇宙:腾讯云元宇宙(Tencent Cloud Metaverse,TCM)提供了全面的元宇宙解决方案,包括虚拟现实、增强现实等。

以上是腾讯云提供的一些相关产品和服务,可以根据具体需求选择适合的产品进行使用。更多详细信息和产品介绍,可以访问腾讯云官方网站:https://cloud.tencent.com/

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

MySQL日期和时间函数汇总

CURTIME() 返回当前时间 DATE() 获取日期或日期时间表达式的日期部分 DATE_ADD() 将时间值(间隔)添加到日期值 DATE_FORMAT() 按指定格式格式化日期 DATE_SUB() 期中减去时间值...(间隔) DATEDIFF() 减去两个日期 DAY() 和 DAYOFMONTH()同义 DAYNAME() 返回工作日名称 DAYOFMONTH() 返回月份的日期 (0-31) DAYOFWEEK...() 根据参数返回工作日的排序 DAYOFYEAR() 返回一年中的某一天 (1-366) EXTRACT() 获取日期中的一部分 FROM_DAYS() 将一天的序号转化为日期 FROM_UNIXTIME...日期 UTC_TIME() 返回当前UTC时间 UTC_TIMESTAMP() 返回当前UTC日期和时间 WEEK() 返回星期数 WEEKDAY() 返回工作日序号 WEEKOFYEAR() 返回日期...expr是一个表达式,指定开始日期加上或减去的间隔值。expr被计算为一个字符串;它可以以-开头表示负间隔。unit是一个关键字,指示表达式应使用的单位。

3.6K20
  • 【MySQL高级】Mysql并发参数调整及常用SQL技巧

    4.3 table_open_cache 该参数用来控制所有SQL语句执行线程可打开表缓存的数量, 而在执行SQL语句时,每一个SQL执行线程至少要打开 1 个表缓存。...常用SQL技巧 6.1 SQL执行顺序 编写顺序 SELECT DISTINCT FROM JOIN...返回当前系统的日期值 CURTIME 和 CURRENT_TIME 两个函数作用相同,返回当前系统的时间值 NOW 和 SYSDATE 两个函数作用相同,返回当前系统的日期和时间值 MONTH 获取指定日期中的月份...ADDTIME 时间加法运算,在原始时间上添加指定的时间 SUBTIME 时间减法运算,在原始时间上减去指定的时间 DATEDIFF 获取两个日期之间间隔,返回参数 1 减去参数 2 的值 DATE_FORMAT...格式化指定的日期,根据参数返回指定格式的值 WEEKDAY 获取指定日期在一周内的对应的工作日索引 聚合函数 函数名称 作用 MAX 查询指定列的最大值 MIN 查询指定列的最小值 COUNT 统计查询结果的行数

    2K30

    SQL日期函数

    能够提取日期中的特定部分,如年、月、、小时等,以便按照这些部分进行分类和统计。 2. 数据处理和转换: 将日期格式进行转换,以适应不同的显示需求或与其他系统进行数据交互。...总之,SQL 中的日期函数为处理和操作与日期相关的数据提供了强大而灵活的工具,使得数据处理更加准确和高效。...minite %r 时间,12 小时(hh:mm:ss [AP]M) %T 时间,24 小时(hh:mm:ss) %S 秒(00……59) %s 秒(00……59) ★★★ %p AM或PM %w 一个星期中的天数...2024-09-15 21:38:44 SELECT DATE_ADD('2022-02-06 22:47:17',INTERVAL 2 MONTH); # 2024-09-15 21:39:40 3.2减去一个时间间隔...像计算两个日期之间的工作日数量,使用相应的日期函数会简单很多。 4. 优化性能: 数据库系统对内置的日期函数进行了优化,执行效率通常较高。

    7410

    cron表达式

    在字段分钟中,5-20表示5分钟到20分钟之间每隔一分钟触发一次。 / 指定数值的增量。 在字段分钟中,0/15表示第0分钟开始,每15分钟。在字段分钟中3/20表示第3分钟开始,每20分钟。...在日期中,L表示某个月的最后一天。在星期中,L表示一个星期的最后一天,也就是星期六。 如果在L前有具体的内容,例如,在字段星期中的6L表示这个月的最后一个星期五。...W 除周末以外的有效工作日,在离指定日期的最近的有效工作日触发事件。W字符寻找最近有效工作日时不会跨过当前月份,连用字符LW时表示为指定月份的最后一个工作日。...在日期中5W,如果5是星期六,则将在最近的工作日星期五,即4触发。如果5是星期天,则将在最近的工作日星期一,即6触发;如果5在星期一到星期五中的一天,则就在5触发。...在字段星期中,4#2表示某月的第二个星期四。 常例 表达式 意义 每隔5秒钟执行一次 */5 * * * * ? 每隔1分钟执行一次 0 * /1 * * * ?

    14510

    Spring boot定时任务

    在字段分钟中,5-20表示5分钟到20分钟之间每隔一分钟触发一次。 / 指定数值的增量。 在字段分钟中,0/15表示第0分钟开始,每15分钟。在字段分钟中3/20表示第3分钟开始,每20分钟。...在日期中,L表示某个月的最后一天。在星期中,L表示一个星期的最后一天,也就是星期六。 如果在L前有具体的内容,例如,在字段星期中的6L表示这个月的最后一个星期五。...W 除周末以外的有效工作日,在离指定日期的最近的有效工作日触发事件。W字符寻找最近有效工作日时不会跨过当前月份,连用字符LW时表示为指定月份的最后一个工作日。...在日期中5W,如果5是星期六,则将在最近的工作日星期五,即4触发。如果5是星期天,则将在最近的工作日星期一,即6触发;如果5在星期一到星期五中的一天,则就在5触发。...在字段星期中,4#2表示某月的第二个星期四。 常例 表达式 意义 每隔5秒钟执行一次 */5 * * * * ? 每隔1分钟执行一次 0 * /1 * * * ?

    12410

    一.使用Scheduled 定时任务器

    :该字符只在日期和星期字段中使用,它通常指定为“无意义的值”,相当于占位符; 减号(-):表达一个范围,如在小时字段中使用“10-12”,则表示 10 到 12 点,即 10,11,12; 逗号(,)...L 在日期字段中,表示这个月份的最后一天,如一月的 31 号,非闰年二月的 28 号;如果 L 用在星期中,则表示星 期六,等同于 7。...但是,如果 L 出现在星期字段里,而且在前面有一个数值 X,则表示“这个月的最后 X 天”,例如,6L 表示该月的最后星期五; W:该字符只能出现在日期字段里,是对前导日期的修饰,表示离该日期最近的工作日...例如 15W 表示离该月 15 号最近的工作日,如果该月 15 号是星期六,则匹配 14 号星期五;如果 15 是星期日,则匹配 16 号星期一;如果 15 号是星期二,那结果就是 15 号星期二。...W 字符串只能指定单一期,而不能指定日期范围; LW 组合:在日期字段可以组合使用 LW,它的意思是当月的最后一个工作日; 井号(#):该字符只能在星期字段中使用,表示当月某个工作日

    48810

    MySQL 常用函数汇总

    mysql> rand(); 1064 - You have an error in your SQL syntax; check the manual that corresponds to your...unix 时间戳函数,返回一个以 unix 时间戳为基础的无符号整数 from_unixtime 将 unix 时间戳转换为时间格式,与 unix_timestamp 互为反函数 month 获取指定日期中的月份...monthname 获取指定日期中的月份英文名称 dayname 获取指定曰期对应的星期几的英文名称 dayofweek 获取指定日期对应的一周的索引位置值 week 获取指定日期是一年中的第几周,返回值的范围是否为...addtime 时间加法运算,在原始时间上添加指定的时间 subtime 时间减法运算,在原始时间上减去指定的时间 datediff 获取两个日期之间间隔,返回参数 1 减去参数 2 的值 date_format...格式化指定的日期,根据参数返回指定格式的值 weekday 获取指定日期在一周内的对应的工作日索引 1.3.1 curdate:系统日期 # curdate() 与 current_date() 函数的作用相同

    2.3K21

    Hive常用日期格式转换

    文章目录 获取当前时间 日期格式转换 返回日期中的年,月,,时,分,秒,当前的周数 计算日期差值 返回当月或当年的第一天 获取当前时间 获取当前时间戳 select unix_timestamp()...2016-08-16','yyyyMMdd') --20160816 字符串强制转换,获取日期 select to_date('2016-08-16 10:03:01') --2016-08-16 类似sql...,月,,时,分,秒,当前的周数 返回日期中的年 select year('2016-08-16 10:03:01') --2016 返回日期中的月 select month('2016-08-16 10...:03:01') --8 返回日期中 select day('2016-08-16 10:03:01') --16 返回日期中的时 select hour('2016-08-16 10:03:01'...--1 返回日期在当前的周数 select weekofyear('2016-08-16 10:03:01') --33 计算日期差值 返回结束日期减去开始日期的天数 select datediff('

    11.2K21

    SpringBoot整合Scheduled(定时任务器)

    :该字符只在日期和星期字段中使用,它通常指定为“无意义的值”,相当于占位符; ●减号(-):表达一个范围,如在小时字段中使用“10-12”,则表示 10 到 12 点,即 10,11,12; ●逗号...L 在日期字段中,表示这个月份的最后一天,如一月的 31 号,非闰年二月的 28 号;如果 L 用在星期中,则表示星期六,等同于 7。...如果 L 出现在星期字段里,而且在前面有一个数值 X,则表示“这个月的最后 X 天”, 例如,6L 表示该月的最后星期五; ●W:该字符只能出现在日期字段里,是对前导日期的修饰,表示离该日期最近的工作日...例如 15W 表示离该月 15 号最近的工作日,如果该月 15 号是星期六,则匹配 14 号星期五;如果 15 是星期日,则匹配 16 号星期一;如果 15 号是星期二,那结果就是 15 号星期二。...W 字符串只能指定单一期,而不能指定日期范围; ●LW 组合:在日期字段可以组合使用 LW,它的意思是当月的最后一个工作日; ●井号(#):该字符只能在星期字段中使用,表示当月某个工作日

    89420

    sql server中部分函数功能详解

    DateDiff() DATEDIFF 函数计算指定的两个日期中第二个日期与第一个日期的时间差的日期部分。换句话说,它得 出两个日期之间的间隔。...dy、y 日期 dd、d 星期 wk、ww 工作日 dw 小时 hh 分钟 mi、n 秒 ss、s 毫秒 ms 11. datepart()函数 DATEPART() 函数用于返回日期/时间的单独部分,...比如年、月、、小时、分钟等等。...15. dateadd() 定义和用法 DATEADD() 函数在日期中添加或减去指定的时间间隔。 语法 DATEADD(datepart,number,date) date 参数是合法的日期表达式。...小数位数必须是 0 到 a之间的值。默认小数位数是 0。 19. right() 反回字符右边的指定长度的字符 例:select right('1234',2) 结果:34 20.

    1.6K30

    ClickHouse之常见的时间周期函数 - Java技术债务

    25 │ └──────────┘ date_sub 提供的日期或带时间的日期中减去时间间隔或日期间隔...返回值 date 中减去以unit 表示的value 得到的日期或带时间的日期。 类型为:Date 或者 DateTime。...2018-04-01 │ └────────────────────────────────────────────────┘ timestamp_sub 提供的日期或带时间的日期中减去时间间隔...相当于%H:%M 22:33 %S 秒 (00-59) 44 %t 水平制表符(’) %T ISO8601时间格式(HH:MM:SS),相当于%H:%M:%S 22:33:44 %u ISO8601工作日为数字...,星期一为1(1-7) 2 %V ISO8601周编号(01-53) 01 %w 工作日为十进制数,周日为0(0-6) 2 %y 年份,最后两位数字(00-99) 18 %Y 年 2018 %% %符号

    49110

    SpringBoot整合Scheduled(定时任务器)

    :该字符只在日期和星期字段中使用,它通常指定为“无意义的值”,相当于占位符; 减号(-):表达一个范围,如在小时字段中使用“10-12”,则表示 10 到 12 点,即 10,11,12; 逗号(,)...L 在日期字段中,表示这个月份的最后一天,如一月的 31 号,非闰年二月的 28 号;如果 L 用在星期中,则表示星期六,等同于 7。...但是,如果 L 出现在星期字段里,而且在前面有一个数值 X,则表示“这个月的最后 X 天”, 例如,6L 表示该月的最后星期五; W:该字符只能出现在日期字段里,是对前导日期的修饰,表示离该日期最近的工作日...例如 15W 表示离该月 15 号最近的工作日,如果该月 15 号是星期六,则匹配 14 号星期五;如果 15 是星期日,则匹配 16 号星期一;如果 15 号是星期二,那结果就是 15 号星期二。...W 字符串只能指定单一期,而不能指定日期范围; LW 组合:在日期字段可以组合使用 LW,它的意思是当月的最后一个工作日; 井号(#):该字符只能在星期字段中使用,表示当月某个工作日

    88810

    MySQL常用函数介绍

    ,sn) 合并字符串函数,返回结果为连接参数产生的字符串,参数可以是一个或多个 INSERT(str,x,y,instr) 将字符串str第x位置开始,y个字符长的子串替换为字符串instr,...UNIX时间戳函数,返回一个以 UNIX 时间戳为基础的无符号整数 FROM_UNIXTIME 将 UNIX 时间戳转换为时间格式,与UNIX_TIMESTAMP互为反函数 MONTH 获取指定日期中的月份...MONTHNAME 获取指定日期中的月份英文名称 DAYNAME 获取指定曰期对应的星期几的英文名称 DAYOFWEEK 获取指定日期对应的一周的索引位置值 WEEK 获取指定日期是一年中的第几周...ADDTIME 时间加法运算,在原始时间上添加指定的时间 SUBTIME 时间减法运算,在原始时间上减去指定的时间 DATEDIFF 获取两个日期之间间隔,返回参数 1 减去参数 2 的值...DATE_FORMAT 格式化指定的日期,根据参数返回指定格式的值 WEEKDAY 获取指定日期在一周内的对应的工作日索引 一些示例: # CURDATE() 和 CURRENT_DATE()

    1.8K21
    领券