gpt4 book ai didi

mysql - Excel WEEKNUM() 与 MySQL YEARWEEK()

转载 作者:行者123 更新时间:2023-11-29 07:37:09 25 4
gpt4 key购买 nike

我正在创建一个打卡时间系统,到目前为止,我已经能够获得今天的用户打卡时间和本周的用户打卡时间。

最后一步是获取当前支付周期的用户当前时间。

我已经在 Excel 中创建了一个支付期开始和结束日期列表。

每当您使用像 Excel WEEKNUM() 或 MySQL YEARWEEK() 这样的函数时,这些函数都会附带一个额外的选项参数。

下面的链接在表格中显示了这些模式之间的差异。

Excel WEEKNUM() table reference

MySQL YEARWEEK() table reference

我的问题是,如果我们每两周进行一次工资核算,我应该在 Excel WEEKNUM() 中设置哪种模式与 MySQL YEARWEEK() 相对应?

附加电子表格 clock.logic.xlsx

感谢您的帮助。

最佳答案

首先是个好消息:Excel ISOWEEKNUM function 对应于 MySQL WEEKOFYEAR WEEK(date,3) 。因此确定 ISO 周数是可能的。

但是所有其他 WEEK 模式都是垃圾,因为一年中第一周的定义不符合其他地方使用的任何逻辑。例如最简单的模式,星期日作为一周的第一天,一年的第一周是周,一年的第一天落入。这就是 Excels WEEKNUM function 返回的内容使用 Return_type 1 或省略。这应该是模式 0 (0-53) 或模式 2 (1-53) 中的 MySQLWEEK。但到底是什么?

SELECT WEEK('2008-01-01',0); -> 0

SELECT WEEK('2008-01-01',2); -> 52

MySQL 告诉我们,星期二,2008-01-01,是在 2007 年的第 52 周?

真的吗?为什么?

因为 MySQL 不满足规则“第 1 周是第一周......今年有一个星期日”。相反,对于 MySQL,第一周似乎从今年的第一个星期日开始

因此,除了 ISO 周数之外,MySQL 中的所有其他周数都是错误的。人们可能会想:让我们采用模数 0 并将结果简单地加 1。但这在 2012 年失败了。因为 2012-01-01 是星期日并且 MySQL 在模式 0 和模式 2 中给出了第 1 周。

例子:

Excel:

Date        WEEKNUM ISOWEEKNUM
2008-01-01 1 1
2008-02-01 5 5
2008-02-03 6 5
2008-02-04 6 6
2008-12-31 53 1
2009-01-01 1 1
2009-02-01 6 5
2009-12-31 53 53
2012-01-01 1 52
2012-02-01 5 5
2012-12-31 53 1
2016-01-01 1 53
2016-02-01 6 5
2016-12-31 53 52

MySQL:

drop table if exists tmp;

create table tmp (d date);

insert into tmp (d) values
('2008-01-01'),
('2008-02-01'),
('2008-02-03'),
('2008-02-04'),
('2008-12-31'),
('2009-01-01'),
('2009-02-01'),
('2009-12-31'),
('2012-01-01'),
('2012-02-01'),
('2012-12-31'),
('2016-01-01'),
('2016-02-01'),
('2016-12-31');

select d as 'Date', week(d,0), week(d,3) from tmp;

结果:

Date        week(d,0) week(d,3)     
2008-01-01 0 1
2008-02-01 4 5
2008-02-03 5 5
2008-02-04 5 6
2008-12-31 52 1
2009-01-01 0 1
2009-02-01 5 5
2009-12-31 52 53
2012-01-01 1 52
2012-02-01 5 5
2012-12-31 53 1
2016-01-01 0 53
2016-02-01 5 5
2016-12-31 52 52

关于mysql - Excel WEEKNUM() 与 MySQL YEARWEEK(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48247084/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com