github.com/matrixorigin/matrixone@v0.7.0/test/distributed/cases/function/func_datetime_extract.test (about)

     1  #SELECT 数据格式
     2  
     3  select extract(YEAR FROM "1999-01-02 10:11:12");
     4  select extract(YEAR_MONTH FROM "1999-01-02");
     5  select extract(DAY FROM "1999-01-02");
     6  select extract(DAY_HOUR FROM "1999-01-02 10:11:12");
     7  select extract(HOUR FROM "1999-01-02 10:11:12");
     8  select extract(SECOND FROM "1999-01-02 10:11:12");
     9  select extract(MONTH FROM "2001-02-00");
    10  
    11  
    12  #SELECT 数据格式
    13  SELECT EXTRACT(QUARTER FROM '2004-01-15') AS quarter;
    14  SELECT EXTRACT(QUARTER FROM '2004-02-15') AS quarter;
    15  SELECT EXTRACT(QUARTER FROM '2004-03-15') AS quarter;
    16  SELECT EXTRACT(QUARTER FROM '2004-04-15') AS quarter;
    17  SELECT EXTRACT(QUARTER FROM '2004-05-15') AS quarter;
    18  SELECT EXTRACT(QUARTER FROM '2004-06-15') AS quarter;
    19  SELECT EXTRACT(QUARTER FROM '2004-07-15') AS quarter;
    20  SELECT EXTRACT(QUARTER FROM '2004-08-15') AS quarter;
    21  SELECT EXTRACT(QUARTER FROM '2004-09-15') AS quarter;
    22  SELECT EXTRACT(QUARTER FROM '2004-10-15') AS quarter;
    23  SELECT EXTRACT(QUARTER FROM '2004-11-15') AS quarter;
    24  SELECT EXTRACT(QUARTER FROM '2004-12-15') AS quarter;
    25  
    26  
    27  #NULL
    28  select extract(month from NULL);
    29  
    30  #ON CONDITION
    31  create table t1(a INT,  b date);
    32  create table t2(a INT,  b date);
    33  insert into t1 values(1, "2012-10-12"),(2, "2004-04-24"),(3, "2008-12-04"),(4, "2012-03-23");
    34  insert into t2 values(1, "2013-04-30"),(2, "1994-10-04"),(3, "2018-06-04"),(4, "2012-10-12");
    35  SELECT t1.a, t2.a FROM t1 JOIN t2 ON (extract(year from t1.b) = extract(year from t2.b));
    36  drop table t1;
    37  drop table t2;
    38  
    39  
    40  #WHERE,算术运算, 比较运算
    41  create table t1 (ctime varchar(20));
    42  insert into t1 values ('2001-01-12 12:23:40'),('2002-03-12 12:23:40');
    43  select ctime from t1 where extract(MONTH FROM ctime) = 1 AND extract(YEAR FROM ctime) = 2001;
    44  select ctime from t1 where extract(MONTH FROM ctime) > 2;
    45  drop table t1;
    46  
    47  #嵌套
    48  CREATE TABLE t1 (i1 INT,d1 DATETIME);
    49  #INSERT INTO t1 SELECT MAX(1), NOW() FROM t1;
    50  #SELECT i1, EXTRACT(YEAR FROM NOW()), EXTRACT(YEAR FROM d1) FROM t1;
    51  INSERT INTO t1 SELECT MAX(1), "2023-04-23 08:23:21" FROM t1;
    52  SELECT i1, EXTRACT(YEAR FROM "2023-04-23 08:23:21"), EXTRACT(YEAR FROM d1) FROM t1;
    53  DROP TABLE t1;
    54  
    55  
    56  #EXTREME VALUE
    57  -- @bvt:issue#4689
    58  select extract(DAY_MINUTE FROM "02 10:11:12");
    59  select extract(DAY_SECOND FROM "225 10:11:12");
    60  select extract(HOUR_MINUTE FROM "10:11:12");
    61  select extract(HOUR_SECOND FROM "10:11:12");
    62  select extract(MINUTE FROM "10:11:12");
    63  select extract(MINUTE_SECOND FROM "10:11:12");
    64  
    65  #EXTREME VALUE
    66  SELECT EXTRACT(HOUR FROM '100000:02:03');
    67  -- @bvt:issue
    68  
    69  select reverse(concat_ws(",",extract(year from 20090702)));
    70  
    71  create table t1 (d date, dt datetime, t timestamp, c char(10));
    72  insert ignore into t1 values ("0000-00-00", "0000-00-00", "0000-00-00", "0000-00-00");
    73  select extract(MONTH FROM "0000-00-00"),extract(MONTH FROM d),extract(MONTH FROM dt),extract(MONTH FROM t),extract(MONTH FROM c) from t1;
    74  drop table t1;
    75  
    76  CREATE TABLE t1 (i1 INT,d1 DATETIME);
    77  INSERT INTO t1 values(1, "2023-04-23 08:23:21");
    78  SELECT i1, EXTRACT(HOUR FROM d1) FROM t1;
    79  DROP TABLE t1;
    80  
    81  
    82  #INSERT INTO, DISTINCT,HAVING
    83  CREATE TABLE t1
    84  (`date` date,
    85  `extracted_week` int,
    86  `weekday` int,
    87  `week` int,
    88  `default_week_format` int);
    89  INSERT INTO t1 SELECT '2000-01-01', EXTRACT(WEEK FROM '2000-01-01'), weekday('2000-01-01'), WEEK('2000-01-01'), 1;
    90  INSERT INTO t1 SELECT '2000-01-01', EXTRACT(WEEK FROM '2000-01-01'), weekday('2000-01-01'), WEEK('2000-01-01'), 2;
    91  INSERT INTO t1 SELECT '2000-01-01', EXTRACT(WEEK FROM '2000-01-01'), weekday('2000-01-01'), WEEK('2000-01-01'), 3;
    92  INSERT INTO t1 SELECT '2000-01-01', EXTRACT(WEEK FROM '2000-01-01'), weekday('2000-01-01'), WEEK('2000-01-01'), 4;
    93  INSERT INTO t1 SELECT '2000-01-01', EXTRACT(WEEK FROM '2000-01-01'), weekday('2000-01-01'), WEEK('2000-01-01'), 5;
    94  INSERT INTO t1 SELECT '2000-01-01', EXTRACT(WEEK FROM '2000-01-01'), weekday('2000-01-01'), WEEK('2000-01-01'), 6;
    95  INSERT INTO t1 SELECT '2000-01-01', EXTRACT(WEEK FROM '2000-01-01'), weekday('2000-01-01'), WEEK('2000-01-01'), 7;
    96  INSERT INTO t1 SELECT '2000-01-01', EXTRACT(WEEK FROM '2000-01-01'), weekday('2000-01-01'), WEEK('2000-01-01'), 0;
    97  SELECT * FROM t1;
    98  SELECT distinct extracted_week from t1;
    99  select date from t1 having extract(day FROM date)=1;
   100  drop table t1;
   101  
   102  
   103  CREATE TABLE t1
   104  (`date` date,
   105  `extracted_week` int);
   106  INSERT INTO t1 select '2000-01-01', EXTRACT(WEEK FROM '2000-01-01');
   107  SELECT * FROM t1;
   108  SELECT distinct extracted_week from t1;
   109  select date from t1 having extract(day FROM date)=1;
   110  drop table t1;