如何在SQL中从给定日期获取下一个指定星期几的日期
给定日期查询最近后续周四实现方案
规则说明
- 输入任意格式的日期,返回该日期之后最近的周四日期
- 若输入日期本身为周四,返回下一周的周四,不返回当日
- 示例:
输入22-09-2021(周三)→ 输出23-09-2021(周四)
输入23-09-2021(周四)→ 输出30-09-2021(下周四)
核心计算逻辑
- 先将输入的日期字符串解析为可操作的日期对象
- 获取输入日期对应的星期数值
- 计算当前日期到下周四的天数差:若差值为0(当天为周四),则固定加7天,否则加对应差值天数
- 计算得到的结果按原格式输出即可
代码示例
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
相关产品推荐
相关产品推荐

