亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何將周數轉換為日期?

如何將周數轉換為日期?

慕斯王 2019-12-05 13:22:48
給定一年和一個日歷周,我如何獲得該周的星期二作為日期?
查看完整描述

3 回答

?
慕尼黑8549860

TA貢獻1818條經驗 獲得超11個贊

給定您year和cw(日歷周)作為變量(例如,從SELECT語句中獲?。?,您可以通過以下方式獲取DATE:


DATE_SUB(

  DATE_ADD(MAKEDATE(year, 1), INTERVAL cw WEEK),

  INTERVAL WEEKDAY(

    DATE_ADD(MAKEDATE(year, 1), INTERVAL cw WEEK)

  ) -1 DAY),

該短語DATE_ADD(MAKEDATE(year, 1), INTERVAL cw WEEK)重復;不想存儲變量。SQL語句在MySQL上對我來說效果很好。


更新:只是為了澄清:WEEKDAY(DATE_ADD(MAKEDATE(year, 1), INTERVAL cw WEEK))將產生一周的第一天。從中減去一個數字(星期二為-1;星期三為-2,依此類推,將為您選擇一周中的特定日期)。


查看完整回答
反對 回復 2019-12-05
?
慕慕森

TA貢獻1856條經驗 獲得超17個贊

在MySQL中,該STR_TO_DATE()函數僅需一行即可完成操作!


例如:我們希望得到的日期Tuesday的中32日年度的一周2013。


SELECT STR_TO_DATE('2013 32 Tuesday', '%X %V %W');

將輸出:


'2013-08-13'


查看完整回答
反對 回復 2019-12-05
?
泛舟湖上清波郎朗

TA貢獻1818條經驗 獲得超3個贊

我發現日歷周的定義都說“從星期日開始連續7天?!?/p>


以下是MySQL特有的...您的里程可能會有所不同...


DATE_ADD(MAKEDATE(year,1),INTERVAL cw WEEK)添加了從一年的第一天開始的幾周,這是不正確的...


mysql> select DATE_ADD(MAKEDATE(2011, 1), INTERVAL 1 WEEK);

+----------------------------------------------+

| DATE_ADD(MAKEDATE(2011, 1), INTERVAL 1 WEEK) |

+----------------------------------------------+

| 2011-01-08                                   |

+----------------------------------------------+

根據此定義,只有日歷周的范圍為1到53,并代表該周的星期日才有意義。因此,我們將在今年的第n個星期日增加2天以得到星期二。


以下獲取一年中第一個星期日的日期...


mysql> select date_add('2012-01-01', interval (8 - dayofweek('2011-01-01')) % 7 DAY);

+------------------------------------------------------------------------+

| date_add('2012-01-01', interval (8 - dayofweek('2011-01-01')) % 7 DAY) |

+------------------------------------------------------------------------+

| 2012-01-02                                                             |

+------------------------------------------------------------------------+

因此,它將獲得第10個星期日的日期(注意間隔9周,因為我們已經是1點了)...


mysql> select date_add( date_add('2010-01-01', interval (8 - dayofweek('2010-01-01')) % 7 DAY) , interval 9 week);

+-----------------------------------------------------------------------------------------------------+

| date_add( date_add('2010-01-01', interval (8 - dayofweek('2010-01-01')) % 7 DAY) , interval 9 week) |

+-----------------------------------------------------------------------------------------------------+

| 2010-03-07                                                                                          |

+-----------------------------------------------------------------------------------------------------+

再增加2天才能到達星期二...


mysql> select date_add( date_add( date_add('2010-01-01', interval (8 - dayofweek('2010-01-01')) % 7 DAY) , interval 9 week), interval 2 day);

+--------------------------------------------------------------------------------------------------------------------------------+

| date_add( date_add( date_add('2010-01-01', interval (8 - dayofweek('2010-01-01')) % 7 DAY) , interval 9 week), interval 2 day) |

+--------------------------------------------------------------------------------------------------------------------------------+

| 2010-03-09                                                                                                                     |

+--------------------------------------------------------------------------------------------------------------------------------+

或更一般而言:


select 

date_add( 

    date_add( 

        date_add('<year>-01-01', interval (8 - dayofweek('<year>-01-01')) % 7 DAY) 

        , interval <week-1> week)

    , interval <dayOfWeek> day

);


查看完整回答
反對 回復 2019-12-05
  • 3 回答
  • 0 關注
  • 1287 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號