日付によるmysqlクエリ

クエリの表示日時

  1. select t1、t2 FROM time_val;
  2. SELECT DT FROM datetime_val; s
  3. SELECT CURTIME()、CURTIME(2)、CURTIME(6);(異なる形式で時刻と日付を表示)
  4. SELECT d、DATE_FORMAT(d、 '%M%d、%Y')FROM date_val;
  5. SELECT d、DATE_FORMAT(d、 '%M、%d、%Y')AS date FROM date_val;
    フォーマット文字は
    %Y年、4桁
    %y年、2桁
    %M完全な月(1月、12月)
    %b月、最初の3文字(Jan..Dec)
    %m月2桁(01..12)
    %c月(1..12)
    %d月の日数、2桁(01.31)
    %e月日(1..31)
    %W曜日(日曜〜土曜)
    %r時間、12時間形式、AMまたはPMで終わる
    %T時間、24時間形式
    %H時間、2桁(00〜23)
    %i分、2桁(00..59)
    %s秒、2桁(00.59)
    %%文字 "%"
  6. SELECT dt、DATE_FORMAT(dt、 '%c /%e /%y%r')AS format1、DATE_FORMAT(dt、 '%M%e、%Y%T')AS format2 FROM datetime_val;
  7. SELECT dt、TIME_FORMAT(dt、 '%r')AS '12時間の時間 '、TIME_FORMAT(dt、'%T ')AS '24時間の時間' FROM datetime_val;

現在の日付または時刻を取得します

  1. SELECT CURDATE()、CURTIME()、NOW();
  2. INSERT INTO tsdemo(val)VALUES(5);
  3. INSERT INTO tsdemo(val、ts_both、ts_create、ts_update)VALUES(10、NULL、NULL、NULL);
  4. SELECT * FROM tsdemo;
  5. SELECT dt、DATE(dt)、TIME(dt)FROM datetime_val;
  6. SELECT dt、YEAR(dt)、DAYOFMONTH(dt)、HOUR(dt)、SECOND(dt)FROM datetime_val;
  7. SELECT d、DAYOFYEAR(d)FROM date_val;
  8. SELECT d、DAYNAME(d)、LEFT(DAYNAME(d)、3)FROM date_val;
  9. SELECT dt、DATE_FORMAT(dt、 '%Y')AS年、DATE_FORMAT(dt、 '%d')AS日、TIME_FORMAT(dt、 '%H')AS時間、TIME_FORMAT(dt、 '%s')AS秒FROM datetime_val;
  10. SELECT dt、DATE_FORMAT(dt、 '%Y-%m-%d')AS '日付部分'、TIME_FORMAT(dt、 '%T')AS '時間部分' FROM datetime_val;

合成日付または時刻の値

  1. MAKETIME(0,30,58)、MAKETIME(-5,0,11)を選択します。
  2. SELECT d、DATE_FORMAT(d、 '%Y-%m-01')FROM date_val;
  3. SELECT t1、TIME_FORMAT(t1、 '%H:%i:00')FROM time_val;
  4. SELECT d、CONCAT(YEAR(d)、 '-'、MONTH(d)、 '-01')FROM date_val;
  5. SELECT d、CONCAT(YEAR(d)、 '-'、LPAD(MONTH(d)、2、 '0')、 '-01')FROM date_val;

時間値と基本単位の間の変換

  1. SELECT t1、TIME_TO_SEC(t1)AS 'TIME to seconds'、SEC_TO_TIME(TIME_TO_SEC(t1))AS 'TIME to seconds to TIME' FROM time_val;
  2. SELECT t1、TIME_TO_SEC(t1)AS '秒'、TIME_TO_SEC(t1)/ 60 AS '分'、TIME_TO_SEC(t1)/(60 60)AS '時間'、TIME_TO_SEC(t1)/(24 60 * 60)AS '日のFROM time_val;
  3. ELECT dt、TIME_TO_SEC(dt)AS '秒の時間部分'、SEC_TO_TIME(TIME_TO_SEC(dt))AS '時間部分の時間' FROM datetime_val;
  4. SELECT d、TO_DAYS(d)AS 'DATE to days'、FROM_DAYS(TO_DAYS(d))AS 'DATE to days to DATE' FROM date_val;
  5. SELECT dt、TO_DAYS(dt) '日付部分の日数'、FROM_DAYS(TO_DAYS(dt))AS '日付部分の日付' FROM datetime_val;
  6. SELECT dt、UNIX_TIMESTAMP(dt)AS seconds、FROM_UNIXTIME(UNIX_TIMESTAMP(dt))AS timestamp FROM datetime_val;
  7. SELECT dt、UNIX_TIMESTAMP(dt)AS seconds、FROM_UNIXTIME(UNIX_TIMESTAMP(dt))AS timestamp FROM datetime_val;
  8. SELECT DATEDIFF(@ d1、@ d2)AS 'd1-@ d2'、DATEDIFF(@ d2、@ d1)AS 'd2-d1';
  9. SELECT TIMEDIFF(@ t1、@ t2)AS 't1-t2'、TIMEDIFF(@ t2、@ t1)AS 't2-t1';

時間、日付の加算と減算

  1. SET @ t1 = '12:00:00 '、@ t2 = '15:30:00';
  2. SELECT ADDTIME(@ t1、@ t2);
  3. SET @dt = '1984-03-01 12:00:00'、@ t = '12:00:00 ';
  4. SELECT ADDTIME(@ dt、@ t);
  5. SELECT CURDATE()、DATE_ADD(CURDATE()、INTERVAL 3 DAY);
  6. SELECT CURDATE()、DATE_ADD(CURDATE()、INTERVAL 1 WEEK);
  7. SELECT NOW()、DATE_ADD(NOW()、INTERVAL '3 4' DAY_HOUR);
  8. SELECT @d AS日付、FROM_DAYS(TO_DAYS(@d)+7)AS '日付+ 1週間'、FROM_DAYS(TO_DAYS(@d)-7)AS '日付-1週間';

年齢を計算する

  1. SELECT * FROM兄弟;
  2. SELECT name、birth、CURDATE()AS today、TIMESTAMPDIFF(YEAR、birth、CURDATE())AS 'age in years'、TIMESTAMPDIFF(MONTH、birth、CURDATE())AS 'age in months'兄弟;
  3. SELECT name、birth、 '1953-03-05' AS 'Franz''birth'、TIMESTAMPDIFF(YEAR、birth、 '1953-03-05')AS 'age in years'、TIMESTAMPDIFF(MONTH、birth、 '1953- 03-05 ')AS'月の年齢 'FROM兄弟WHERE name <>' Franz;

月の初日、末日、または月の日数を照会します

  1. SELECT d、DATE_SUB(d、INTERVAL DAYOFMONTH(d)-1 DAY)AS '月の最初' FROM date_val;
  2. SELECT d、LAST_DAY(d)AS '先月' FROM date_val;
  3. SELECT d、LAST_DAY(DATE_ADD(d、INTERVAL -1 MONTH))AS '前月の最後'、LAST_DAY(DATE_ADD(d、INTERVAL 1 MONTH))AS '翌月の最後' FROM date_val;
  4. SELECT d、DAYOFMONTH(LAST_DAY(d))AS '月の日数' FROM date_val;

サブストリング置換により日付を計算します

  1. SELECT d、DATE_FORMAT(d、 '%y-%m-01')AS '月の初日A'、CONCAT(YEAR(d)、 '-'、LPAD(MONTH(d)、2、 '0')、 '-01')AS '月の1日B' FROM date_val;
  2. SELECT CURDATE()、DATE_ADD(DATE_FORMAT(CURDATE()、 '%Y-12-25')、INTERVAL 2 YEAR)AS 'Christmas A'、DATE_FORMAT(DATE_ADD(CURDATE()、INTERVAL 2 YEAR)、 '%Y- 12-25 ')AS' Christmas B ';

週を計算する

  1. SELECT CURDATE()、DAYNAME(CURDATE());
  2. SET @first = DATE_SUB(@ d、INTERVAL DAYOFMONTH(@d)-1 DAY);
    SELECT @d AS '開始日'、@ first as '月の最初の日付'、DAYNAME(@first)AS '月の最初の日';
  3. SELECT d、DAYNAME(d)AS日、DATE_ADD(d、INTERVAL 1-DAYOFWEEK(d)DAY)AS日曜日、DATE_ADD(d、INTERVAL 7 -DAYOFWEEK(d)DAY)AS土曜日FROM date_val;
  4. SET @ target = DATE_SUB(DATE_ADD(CURDATE()、INTERVAL 4-DAYOFWEEK(CURDATE())DAY)、INTERVAL 14 DAY);
    SELECT CURDATE()、@ target、DAYNAME(@target);

ルニアンを計算する

  1. SELECT d、YEAR(d)%4 = 0 AS 'rule-of thumb test'、(YEAR(d)%4 = 0)AND((YEAR(d)%100 <> 0)OR(YEAR(d)% 400 = 0))AS 'complete test' FROM date_val;
  2. SET @ d1 = '2014-04-13'、@ d2 = '2016-04-13';
    SELECT DAYOFYEAR(DATE_FORMAT(@ d1、 '%Y-12-31'))AS 'days in 2014'、DAYOFYEAR(DATE_FORMAT(@ d2、 '%Y-12-31'))AS 'days in 2016';

ISO以外の形式の日付文字列

  1. SELECT d、CONCAT(YEAR(d)、 '-'、MONTH(d)、 '-01')FROM date_val;
  2. SELECT CONCAT(YEAR(d)、 '-')AS 'non-ISO'、DATE_ADD(CONCAT(YEAR(d)、 '-'、MONTH(d)、 '-01')、INTERVAL 0 DAY)AS 'ISO 1 '、CONCAT(YEAR(d)、'-'、MONTH(d)、'-01 ')+ INTERVAL 0 DAY AS' ISO 2 '、FROM_DAYS(TO_DAYS(CONCAT(YEAR(d)、'-'、MONTH (d)、 '-01'))))AS 'ISO 3'、STR_TO_DATE(CONCAT(YEAR(d)、 '-'、MONTH(d)、 '-01')、 '%Y-%m-%d ')AS' ISO 4 'FROM date_val;

時間特徴に基づくクエリ

  1. SELECT d FROM date_val WHERE d <'1990-01-01';
  2. select d FROM date_val WHERE d BETWEEN '1990-01-01' AND '1999-12-31';
  3. SELECT d FROM date_val WHERE d> = DATE_SUB(CURDATE()、INTERVAL 20 YEAR);

おすすめ

転載: blog.51cto.com/14766077/2488362