アナログCPU:5108843109

ゲームと音楽とプログラミング(酒と女とロックンロールのノリで)

('ω') < イザユケエンジニャー

日時を扱ういろいろ MySQL版

MySQLを前提として書いています

現在日時の取得

-- YYYY-MM-DD hh:mm:ss
SELECT NOW()

月の最終日の取得

-- 2013-06-10 を渡すと 2013-06-30
SELECT LAST_DAY(日付)

フォーマットして取得

SELECT DATE_FORMAT(日付, フォーマット)

フォーマット部分

  • %Y 西暦年(4桁)
  • %y 西暦年(2桁)
  • %m 月(2桁ゼロ詰め)
  • %c 月(ゼロ詰めなし)
  • %d 日(2桁ゼロ詰め)
  • %j 日(ゼロ詰めなし)
  • %W 曜日(英語)
  • %w 曜日(日:0、月:1、…、土:6)
  • %k 時(24時間表記)
  • %i 分
  • %s 秒

フォーマット例:「2013/06/09」→ %Y/%m/%d

ここまで覚えておけば組み合わせで大体のことはできそうです

まあ覚えられないので書いてるんですけどね。

以下は蛇足。

現在日時の取得

SELECT
  current_timestamp -- YYYY-MM-DD hh:mm:ss
 ,current_date      -- YYYY-MM-DD
 ,CURDATE()         -- YYYY-MM-DD
 ,current_time      -- hh:mm:ss
 ,CURTIME()         -- hh:mm:ss

曜日の取得

SELECT
  WEEKDAY(日付)   -- 月:0、火:1、…、日:6
 ,DAYOFWEEK(日付) -- 日:1、月:2、…、土:7

これに加え、フォーマット指定の「%w」が「日:0、月:1、…、土:6」と
すべて戻り値が異なるので、
好みの方法で統一しておく方がリスクが少ない。
尚、PHPでのフォーマットにも

  • 月:1、火:2、…、日:7
  • 日:0、月:1、…、土:6

と2通りあり、合わせる必要がある場合はフォーマット指定を利用するとよい。

すごくまぎらわしい。