MySQLコマンドやSQL文に関する各種メモ書き:タグ「日付」での検索

MySQLでx分、x日前のデータを取得する( INTERVAL )

MySQLで カラム「modified_date」が「現在時刻より 5分前以前に更新された」データを取得するには

SELECT
	*
FROM
	テーブル名
WHERE
	modified_date < CURRENT_TIMESTAMP + INTERVAL - 5 MINUTE ;

MINUTEのところは以下の文字が使用できます。

YEAR
MONTH
DAY
-----
WEEK
-----
HOUR
MINUTE
SECOND
-----
MICROSECOND(マイクロ秒)
No.981
01/01 15:11

edit

日付

MySQLで日付データをSELECT時に年・月・日に分解する【DATE_FORMAT】

SELECT時に日付カラム( 2007-01-23 12:30:59 )を年・月・日に分解して取得すると便利です。

SELECT
	DATE_FORMAT(CurDate(),'%Y') as year ,
	DATE_FORMAT(CurDate(),'%m') as month ,
	DATE_FORMAT(CurDate(),'%d') as day
DATE_FORMAT のオプション(指定子)は以下の通り

指定子	説明
%M	月の名前(January..December)。
%W	曜日名(Sunday..Saturday)。
%D	英語のサフィックス付きの日付(0th、1st、2nd、3rd など)。
%Y	4 桁の数値で表した年。
%y	2 桁の数値で表した年。
%X	日曜日を週の最初の日とした場合の週に使用する、4 桁の数値で表した年。%V と組み合わせて使用。
%x	月曜日を週の最初の日とした場合の週に使用する、4 桁の数値で表した年。%v と組み合わせて使用。
%a	略式の曜日名(Sun..Sat)。
%d	数値で表した日付(00..31)。
%e	数値で表した日付(0..31)。
%m	数値で表した月(00..12)。
%c	数値で表した月(0..12)。
%b	略式の月名(Jan..Dec)。
%j	年間を通した日にち(001..366)。
%H	時(00..23)。
%k	時(0..23)。
%h	時(01..12)。
%I	時(01..12)。
%l	時(1..12)。
%i	数値で表した分(00..59)。
%r	12 時間形式の時刻(hh:mm:ss に続けて AM または PM)。
%T	24 時間形式の時刻(hh:mm:ss)。
%S	秒(00..59)。
%s	秒(00..59)。
%f	マイクロ秒(000000..999999)。
%p	AM または PM
%w	曜日(0=Sunday..6=Saturday)。
%U	日曜日を週の最初の日とした場合の週(00..53)。
%u	月曜日を週の最初の日とした場合の週(00..53)。
%V	日曜日を週の最初の日とした場合の週(01..53)。%X と組み合わせて使用。
%v	月曜日を週の最初の日とした場合の週(01..53)。%x と組み合わせて使用。
%%	リテラルの ‘%’。
その他の文字はいずれも、解釈されずにそのまま結果にコピーされる。

参考:http://blog.tofu-kun.org/070620123532.php

No.552
03/26 14:32

edit

日付

MySQLで日付を指定してデータをSELECTする

日付(日付のみ。)を指定してデータをSELECTするには以下のように WHERE句において不等号で指定する。

例1:2018年9月8日の00:00 より前(昔)のデータを選択する

SELECT 
	test_id,
	test_name,
	test_date 
FROM
	test_dt
WHERE
	search_date < '2018-09-08';

例2:2018年9月1日〜9月4日のデータを選択する

SELECT 
	test_id,
	test_name,
	test_date 
FROM
	test_dt
WHERE
	search_date BETWEEN '2018-09-01' AND '2006-09-05' ;

例3:今日より5日以上前(昔)のデータを選択する

SELECT 
	test_id,
	test_name,
	test_date 
FROM
	test_dt
WHERE
	search_date < DATE_SUB( CURDATE(),INTERVAL 5 DAY )

例4:現在時刻から1時間以内に更新した( modified_date が 1時間以内 )データを選択する

SELECT * , DATE_SUB( CURDATE(),INTERVAL 1 MINUTE ) as DATE_A
FROM test_dt
WHERE modified_date > DATE_SUB( NOW(),INTERVAL 1 HOUR )

5日後の場合は DATE_ADD()を使用する

● MySQLで日時(日付と時刻)を指定してデータをSELECTする

CURDATE() の 代わりに NOW() を使用します。

No.317
12/26 20:21

edit

日付