第71天 我的学习之旅!

发布: (2025年12月12日 GMT+8 13:44)
2 min read
原文: Dev.to

Source: Dev.to

使用即将到来的星期三逻辑

今天的挑战是逻辑与 SQL 日期函数的有趣组合。
创建一个包含姓名和预约日期的表,然后编写一个查询,始终返回在即将到来的星期三之前安排的所有预约,基于当前日期。
虽然听起来很简单,但难点在于动态计算下一个星期三。

表定义

CREATE TABLE appointments (
    id SERIAL PRIMARY KEY,
    name VARCHAR(100),
    appointment_date DATE
);

示例数据

INSERT INTO appointments (name, appointment_date) VALUES
('John', '2025-01-13'),
('Sarah', '2025-01-15'),
('Michael', '2025-01-10'),
('Anna', '2025-01-14');

查询即将到来的星期三之前的预约

SELECT name, appointment_date
FROM appointments
WHERE appointment_date < (
    CURRENT_DATE + ((3 - EXTRACT(DOW FROM CURRENT_DATE) + 7) % 7)
);

工作原理

  • EXTRACT(DOW FROM CURRENT_DATE) 返回当前星期几(0 = 星期日,1 = 星期一,… 3 = 星期三,… 6 = 星期六)。
  • (3 - dow + 7) % 7 计算距离下一个星期三(第 3 天)还有多少天。
  • 将这个偏移量加到 CURRENT_DATE 上即可得到即将到来的星期三的日期。

该查询返回所有在该日期之前的预约。

这种动手练习非常适合巩固 SQL 基础并学习如何处理动态日期逻辑——这是在实际数据工作中会经常用到的技能。日复一日,挑战不断,我对 SQL 的信心也在逐步提升。

#SQL #DataEngineering #Database #LearningJourney #WomenInTech #CareerGrowth #DataDriven #RamyaAnalyticsJourney

Back to Blog

相关文章

阅读更多 »

PostgreSQL 日志查看

Forem 徽标https://media2.dev.to/dynamic/image/width=65,height=,fit=scale-down,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%...

PostgreSQL MERGE INTO

SQL UPDATE PSMT_INVOICE_M SET SHIPPING_COUNTRY_ID = SRC.COUNTRY_ID, SHIPPING_CITY_ID = SRC.CITY_ID, SHIPPING_TOWN_ID = SRC.TOWN_ID FROM SELECT PM.INVOICE_M_ID,...

步骤2

查询过滤器https://media2.dev.to/dynamic/image/width=50,height=50,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2...