预计星期天填坑10

好用请点赞收藏一波!

转发请带上作者名@LLLua和原文地址,谢谢!


先占坑,后速更

### 设置 PostgreSQL 中星期天作为每周的第一天 在 PostgreSQL 中,默认情况下 `EXTRACT(DOW FROM timestamp)` 函数返回的是按照 ISO 8601 标准的周几数,即从星期一 (1) 到星期天 (7)[^3]。然而,如果希望将星期天视为一周中的第一天,则可以通过调整查询逻辑来实现这一需求。 为了使星期天成为一周的开始,在处理日期时可以创建一个辅助函数或直接修改 SQL 查询语句。下面是一个简单的例子,展示了如何编写一个自定义函数来获取基于星期天为首日的一周内某天的位置: ```sql CREATE OR REPLACE FUNCTION get_weekday_sunday_first(timestamp) RETURNS integer AS $$ BEGIN RETURN CASE EXTRACT(DOW FROM $1)::integer WHEN 0 THEN 7 -- Sunday as the first day of week ELSE EXTRACT(DOW FROM $1)::integer END; END; $$ LANGUAGE plpgsql IMMUTABLE; ``` 此函数会把原本表示星期天的 0 转换为 7,从而让其看起来像是一个星期里的第七天而不是第一天;对于其他日子则保持不变。当调用这个新创建的功能时,就可以得到以星期天开头的新序列了。 另外一种方法是在 SELECT 语句中直接操作而不必创建额外的对象。比如要找出给定日期属于哪一年第几周(假设每七天构成一个新的周期),可以用如下方式计算: ```sql SELECT date_trunc('week', my_date + interval '1 day') - interval '1 day' AS sunday_based_week_start, extract(year from age(date_trunc('year',my_date),date_trunc('week', my_date + interval '1 day') - interval '1 day')) * 52 + floor(extract(days from age(date_trunc('year',my_date),date_trunc('week', my_date + interval '1 day') - interval '1 day')) / 7)+1 AS custom_week_number FROM your_table_name; ``` 这段代码片段首先通过增加一天再减去一天的方式确保了一周总是始于星期天,并据此重新计算每年内的周序号。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值