【问题标题】:mySQL week function to match excel weeknum 16mySQL week函数匹配excel weeknum 16
【发布时间】:2021-10-22 08:27:18
【问题描述】:

我正在尝试找出复制 weeknum([date],16) 的 excel 函数所需的语法,这将在 MySQL 中实现相同的结果。

目前,EXCEL WEEKNUM 16

=WEEKNUM(DATE(2021,1,1),16) = 1

但是 MySQL 中的所有 week 函数都无法复制这个,我也尝试过

select week('2021-01-01', 0) from dual; result = 0
select week('2021-01-01', 1) from dual; result = 0
select week('2021-01-01', 2) from dual; result = 52
select week('2021-01-01', 3) from dual; result = 53
select week('2021-01-01', 4) from dual; result = 0
select week('2021-01-01', 5) from dual; result = 0
select week('2021-01-01', 6) from dual; result = 53
select week('2021-01-01', 7) from dual; result = 52

所以到目前为止,我唯一的选择是使用 CASE 语句并手动 +/- 周数进行匹配;但是,这在前几年(再次)尝试匹配 Excel WEEKNUM 16 时不起作用。

目前在 StackOverflow 上有一个问答:MySQL week() Function to begin with Saturday 问同样的问题;但是,我已经尝试了提出的解决方案,但它不起作用。

任何帮助将不胜感激!

【问题讨论】:

    标签: mysql excel week-number


    【解决方案1】:

    是的,作为第二个参数,它只接受从 0 到 7 的数字

    在 Excel 中,您可以输入年份开始的日期,但这与标准工作方式不同,但 mysql 遵循 iso 标准 https://en.wikipedia.org/wiki/ISO_week_date

    为此你需要一个函数

    SELECT WEEK( '2021-01-01' , 0 )
    
    |周('2021-01-01',0)| | ------------------------------------: | | 0 |
    SELECT WEEK( '2021-01-01' , 1 )
    
    |周('2021-01-01',1)| | ------------------------------------: | | 0 |
    SELECT WEEK( '2021-01-01' , 2)
    
    |周('2021-01-01',2)| | ----------------------: | | 52 |
    SELECT WEEK( '2021-01-01' , 3 )
    
    |周('2021-01-01',3)| | ------------------------------------: | | 53 |
    SELECT WEEK( '2021-01-01' , 4 )
    
    |周('2021-01-01',4)| | ------------------------------------: | | 0 |
    SELECT WEEK( '2021-01-01' , 5 )
    
    |周('2021-01-01',5)| | ----------------------: | | 0 |
    SELECT WEEK( '2021-01-01' , 6 )
    
    |周('2021-01-01',6)| | ------------------------------------: | | 53 |
    SELECT WEEK( '2021-01-01' , 7 )
    
    |周('2021-01-01',7)| | ------------------------------------: | | 52 |

    db小提琴here

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-06-11
      相关资源
      最近更新 更多