You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在SQL中从给定日期获取下一个指定星期几的日期

给定日期查询最近后续周四实现方案

规则说明

  • 输入任意格式的日期,返回该日期之后最近的周四日期
  • 若输入日期本身为周四,返回下一周的周四,不返回当日
  • 示例:

输入22-09-2021(周三)→ 输出23-09-2021(周四)
输入23-09-2021(周四)→ 输出30-09-2021(下周四)

核心计算逻辑

  1. 先将输入的日期字符串解析为可操作的日期对象
  2. 获取输入日期对应的星期数值
  3. 计算当前日期到下周四的天数差:若差值为0(当天为周四),则固定加7天,否则加对应差值天数
  4. 计算得到的结果按原格式输出即可

代码示例

Python 实现

from datetime import datetime, timedelta

def get_next_thursday(input_date_str, date_format="%d-%m-%Y"):
    input_date = datetime.strptime(input_date_str, date_format)
    # weekday()返回值:0=周一,1=周二,2=周三,3=周四,4=周五,5=周六,6=周日
    current_weekday = input_date.weekday()
    delta_days = (3 - current_weekday + 7) % 7
    # 当天为周四时差值为0,替换为7取下一周周四
    delta_days = 7 if delta_days == 0 else delta_days
    next_thursday = input_date + timedelta(days=delta_days)
    return next_thursday.strftime(date_format)

# 测试用例
print(get_next_thursday("22-09-2021"))
print(get_next_thursday("23-09-2021"))

JavaScript 实现

function getNextThursday(inputDateStr) {
    const [day, month, year] = inputDateStr.split("-").map(Number);
    const inputDate = new Date(year, month - 1, day);
    // getDay()返回值:0=周日,1=周一,2=周二,3=周三,4=周四,5=周五,6=周六
    const currentWeekday = inputDate.getDay();
    let deltaDays = (4 - currentWeekday + 7) % 7;
    deltaDays = deltaDays === 0 ? 7 : deltaDays;
    const nextThursday = new Date(inputDate);
    nextThursday.setDate(inputDate.getDate() + deltaDays);
    // 按dd-mm-yyyy格式拼接返回
    return `${String(nextThursday.getDate()).padStart(2, '0')}-${String(nextThursday.getMonth() + 1).padStart(2, '0')}-${nextThursday.getFullYear()}`;
}

// 测试用例
console.log(getNextThursday("22-09-2021"));
console.log(getNextThursday("23-09-2021"));

内容的提问来源于stack exchange,提问作者Mufaddal

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.03 14:15:03