Scroll

「常に新しい技術に目を向けること」
「既存の技術をより深堀りすること」

カテゴリ:HTML/CSS MySQL 未分類
タグ:
公開日:2016/12/29(木)

MySQLの日付(DATE)をHTML5の入力属性「week」に変換する時は「YEARWEEK」を使うべし

HTML5の<input type=”week”>をMySQLのDATE型から表現する

どうも、僕です。

先日初めてMySQLデータベースの日付型をHTMLのweekに変換したいなんて需要が生まれました。

調べてみるとMySQLには「WEEK」と「YEARWEEK」という2種類の関数が有りました。

(ちなみに「MariaDB 10.1.x」と「MySQL 5.6.x」にて検証しています)

MySQLリファレンス

WEEK

YEARWEEK

うーん、急いでいる時に見るとやる気が失せますね。

腰を据えて調べる

Xmasも過ぎた年末で気持ちに余裕があったのでじっくり挑みました。

HTMLのweekだと「2016年第1週」は「2016/01/04(月)~2016/01/10(日)」となっており、

サーバ送信後は「2016-W01」としてデータが飛んでいます。(PHP5.6とChrome55.0.xの組み合わせで確認)

そこでポイントはネックとなる跨ぎ日の2016/01/01(金)です。

答えから言うと「2015年第53週」で「2015/12/28(月)~2016/01/03(日)」となっており、

サーバ送信後は「2015-W53」としてデータが飛びます。

つまりMySQLでこの挙動をする関数と引数を選択すればいいわけです。

で出した選択は「YEARWEEK」の引数「3」です。


このままだと「201553」という結果が返ってしまうので、ちょっと加工します。

これはもうちょっと良い書き方があるかもですが、とにかく「2015-W53」が返ります。

調べても意外と乗ってなかったのでニッチなのでしょうが、テクってみたい時にお試しあれ。

ちなみにそれぞれの結果はこんな感じです。

この記事を書いた人:えだ

シェアのご協力をお願いいたします!

カテゴリー

アーカイブ