【问题标题】:how get month of week number and year如何获取周数和年份的月份
【发布时间】:2021-02-09 20:54:02
【问题描述】:

我需要返回月份号,从一周的第一天开始

我在mySQL中有一个函数,但是有些结果效果不好

CREATE FUNCTION `MonthOfWeek`( pyear YEAR, pweek SMALLINT, pday SMALLINT ) RETURNS smallint(6)
BEGIN
  DECLARE vdate DATE;
  DECLARE vday SMALLINT;
  SET vdate = AddDate(Concat( pyear, '-01-01'), 7*pweek );
  SET vday = DayOfWeek( vdate );
  SET vdate = IF( vday = 1, vdate, AddDate( vdate, 1-vday ));
  RETURN Month( vdate );
END$$

https://www.epochconverter.com/weeks/2021

日期 4.4.2021 = 2021 年,第 13 周 = 第 3 个月。

日期 2.2.2021 = 年 2021 周 5 = 月 2. 函数返回 1 :(

谢谢

【问题讨论】:

  • date 4.4.2021 fn 参数中没有 DATE 数据类型变量。更精确。
  • 你在一周的第一天叫什么,星期天还是星期一?
  • 第一天是星期一

标签: mysql


【解决方案1】:
SELECT MONTH('2021-04-04' - INTERVAL WEEKDAY('2021-04-04') DAY) x;
+------+
| x    |
+------+
|    3 |
+------+

SELECT MONTH('2021-02-02' - INTERVAL WEEKDAY('2021-02-02') DAY)x;
+------+
| x    |
+------+
|    2 |  -- :-)
+------+

【讨论】:

  • 虽然此代码可能会为问题提供解决方案,但最好添加有关其工作原理/方式的上下文。这可以帮助未来的用户学习并最终将这些知识应用到他们自己的代码中。在解释代码时,您也可能会得到用户的积极反馈/赞成。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-06-25
  • 1970-01-01
  • 2013-06-23
  • 1970-01-01
  • 1970-01-01
  • 2021-12-16
  • 2019-07-27
相关资源
最近更新 更多