@@ -506,6 +506,94 @@ public function testSelectIndexHintUseGroup() {
506506 $ this ->assertEquals ( 1 , $ result [0 ]->output );
507507 }
508508
509+ public function testDateAddFunction () {
510+ // second
511+ $ result = $ this ->assertQuery (
512+ 'SELECT DATE_ADD("2008-01-02 13:29:17", INTERVAL 1 SECOND) as output '
513+ );
514+ $ this ->assertEquals ( '2008-01-02 13:29:18 ' , $ result [0 ]->output );
515+
516+ // minute
517+ $ result = $ this ->assertQuery (
518+ 'SELECT DATE_ADD("2008-01-02 13:29:17", INTERVAL 1 MINUTE) as output '
519+ );
520+ $ this ->assertEquals ( '2008-01-02 13:30:17 ' , $ result [0 ]->output );
521+
522+ // hour
523+ $ result = $ this ->assertQuery (
524+ 'SELECT DATE_ADD("2008-01-02 13:29:17", INTERVAL 1 HOUR) as output '
525+ );
526+ $ this ->assertEquals ( '2008-01-02 14:29:17 ' , $ result [0 ]->output );
527+
528+ // day
529+ $ result = $ this ->assertQuery (
530+ 'SELECT DATE_ADD("2008-01-02 13:29:17", INTERVAL 1 DAY) as output '
531+ );
532+ $ this ->assertEquals ( '2008-01-03 13:29:17 ' , $ result [0 ]->output );
533+
534+ // week
535+ $ result = $ this ->assertQuery (
536+ 'SELECT DATE_ADD("2008-01-02 13:29:17", INTERVAL 1 WEEK) as output '
537+ );
538+ $ this ->assertEquals ( '2008-01-09 13:29:17 ' , $ result [0 ]->output );
539+
540+ // month
541+ $ result = $ this ->assertQuery (
542+ 'SELECT DATE_ADD("2008-01-02 13:29:17", INTERVAL 1 MONTH) as output '
543+ );
544+ $ this ->assertEquals ( '2008-02-02 13:29:17 ' , $ result [0 ]->output );
545+
546+ // year
547+ $ result = $ this ->assertQuery (
548+ 'SELECT DATE_ADD("2008-01-02 13:29:17", INTERVAL 1 YEAR) as output '
549+ );
550+ $ this ->assertEquals ( '2009-01-02 13:29:17 ' , $ result [0 ]->output );
551+ }
552+
553+ public function testDateSubFunction () {
554+ // second
555+ $ result = $ this ->assertQuery (
556+ 'SELECT DATE_SUB("2008-01-02 13:29:17", INTERVAL 1 SECOND) as output '
557+ );
558+ $ this ->assertEquals ( '2008-01-02 13:29:16 ' , $ result [0 ]->output );
559+
560+ // minute
561+ $ result = $ this ->assertQuery (
562+ 'SELECT DATE_SUB("2008-01-02 13:29:17", INTERVAL 1 MINUTE) as output '
563+ );
564+ $ this ->assertEquals ( '2008-01-02 13:28:17 ' , $ result [0 ]->output );
565+
566+ // hour
567+ $ result = $ this ->assertQuery (
568+ 'SELECT DATE_SUB("2008-01-02 13:29:17", INTERVAL 1 HOUR) as output '
569+ );
570+ $ this ->assertEquals ( '2008-01-02 12:29:17 ' , $ result [0 ]->output );
571+
572+ // day
573+ $ result = $ this ->assertQuery (
574+ 'SELECT DATE_SUB("2008-01-02 13:29:17", INTERVAL 1 DAY) as output '
575+ );
576+ $ this ->assertEquals ( '2008-01-01 13:29:17 ' , $ result [0 ]->output );
577+
578+ // week
579+ $ result = $ this ->assertQuery (
580+ 'SELECT DATE_SUB("2008-01-02 13:29:17", INTERVAL 1 WEEK) as output '
581+ );
582+ $ this ->assertEquals ( '2007-12-26 13:29:17 ' , $ result [0 ]->output );
583+
584+ // month
585+ $ result = $ this ->assertQuery (
586+ 'SELECT DATE_SUB("2008-01-02 13:29:17", INTERVAL 1 MONTH) as output '
587+ );
588+ $ this ->assertEquals ( '2007-12-02 13:29:17 ' , $ result [0 ]->output );
589+
590+ // year
591+ $ result = $ this ->assertQuery (
592+ 'SELECT DATE_SUB("2008-01-02 13:29:17", INTERVAL 1 YEAR) as output '
593+ );
594+ $ this ->assertEquals ( '2007-01-02 13:29:17 ' , $ result [0 ]->output );
595+ }
596+
509597 public function testLeftFunction1Char () {
510598 $ result = $ this ->assertQuery (
511599 'SELECT LEFT("abc", 1) as output '
0 commit comments