データベース(MySQL)で普段よく使いますが、
なかなか覚えられない、日付の操作のSQLについて書きます。
以下のようなニュースのテーブルが存在します。
CREATE TABLE IF NOT EXISTS `news` (
`id` int(10) unsigned NOT NULL AUTO_INCREMENT,
`year` smallint(6) , — 日付(年)
`month` smallint(6) , — 日付(月)
`day` smallint(6) , — 日付(日)
`title` varchar(200),
`created` datetime, — 作成日
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
– 作成日が3日よりのニュースを取得
SELECT * FROM `news` WHERE date_add(created, interval +3 DAY) < now();
– 日付が現在より前のニュースを取得
SELECT * FROM news WHERE CAST(concat( news.year, ‘-‘, news.month, ‘-‘, news.day ) AS DATE ) < now();
– ニュースの作成日の年・月・日を取得
SELECT EXTRACT(YEAR FROM created) as created_year,
EXTRACT(MONTH FROM created) as created_month,
EXTRACT(DAY FROM created) as created_day FROM news;
– ニュースの作成日を○年○月○日の形式で取得
SELECT DATE_FORMAT(created,’%Y年%m月%d日’) as created FROM news;
なかなか慣れませんが、とても便利です。