diff options
author | unknown <gluh@gluh.mysql.r18.ru> | 2003-12-08 14:41:41 +0400 |
---|---|---|
committer | unknown <gluh@gluh.mysql.r18.ru> | 2003-12-08 14:41:41 +0400 |
commit | 417354eaa127934f5aadcc9b245561a1519ba998 (patch) | |
tree | 9c147b6d7fd7bc40e51a59e4315562f59ccbcde0 /sql/item_timefunc.h | |
parent | 4379cbcf3056a33f41ddf489828203a6c03e793f (diff) | |
download | mariadb-git-417354eaa127934f5aadcc9b245561a1519ba998.tar.gz |
WL#530&531: TIMESTAMPADD, TIMESTAMPDIFF functions
Syntax for TIMESTAMPADD:
TIMESTAMPADD(interval, integer_expression, datetime_expression)
interval:= FRAC_SECOND | SECOND | MINUTE | HOUR | DAY | WEEK | MONTH |
QUARTER | YEAR
Supported SQL_TSI_ prefix (like SQL_TSI_SECOND)
Syntax for TIMESTAMPDIFF:
TIMESTAMPDIFF(interval, datetime_expression1, datetime_expression2)
interval:= FRAC_SECOND | SECOND | MINUTE | HOUR | DAY | WEEK | MONTH |
QUARTER | YEAR
Supported SQL_TSI_ prefix (like SQL_TSI_SECOND)
mysql-test/r/func_sapdb.result:
Additional tests for timediff
mysql-test/r/func_time.result:
Tests for timestampadd, timestampdiff functions
mysql-test/r/keywords.result:
Test for new keywords
mysql-test/t/func_sapdb.test:
Additional tests for timediff
mysql-test/t/func_time.test:
Tests for timestampadd, timestampdiff functions
mysql-test/t/keywords.test:
Test for new keywords
sql/item_create.cc:
WL#530&531: TIMESTAMPADD, TIMESTAMPDIFF functions
sql/item_create.h:
WL#530&531: TIMESTAMPADD, TIMESTAMPDIFF functions
sql/item_timefunc.cc:
WL#530&531: TIMESTAMPADD, TIMESTAMPDIFF functions
sql/item_timefunc.h:
WL#530&531: TIMESTAMPADD, TIMESTAMPDIFF functions
sql/lex.h:
WL#530&531: TIMESTAMPADD, TIMESTAMPDIFF functions
sql/sql_yacc.yy:
WL#530&531: TIMESTAMPADD, TIMESTAMPDIFF functions
Diffstat (limited to 'sql/item_timefunc.h')
-rw-r--r-- | sql/item_timefunc.h | 28 |
1 files changed, 23 insertions, 5 deletions
diff --git a/sql/item_timefunc.h b/sql/item_timefunc.h index 6dcf7d00ce1..d0c6c501d85 100644 --- a/sql/item_timefunc.h +++ b/sql/item_timefunc.h @@ -543,11 +543,12 @@ public: enum interval_type { - INTERVAL_YEAR, INTERVAL_MONTH, INTERVAL_DAY, INTERVAL_HOUR, INTERVAL_MINUTE, - INTERVAL_SECOND, INTERVAL_MICROSECOND ,INTERVAL_YEAR_MONTH, INTERVAL_DAY_HOUR, - INTERVAL_DAY_MINUTE, INTERVAL_DAY_SECOND, INTERVAL_HOUR_MINUTE, - INTERVAL_HOUR_SECOND, INTERVAL_MINUTE_SECOND, INTERVAL_DAY_MICROSECOND, - INTERVAL_HOUR_MICROSECOND, INTERVAL_MINUTE_MICROSECOND, INTERVAL_SECOND_MICROSECOND + INTERVAL_YEAR, INTERVAL_QUARTER, INTERVAL_MONTH, INTERVAL_DAY, INTERVAL_HOUR, + INTERVAL_MINUTE, INTERVAL_WEEK, INTERVAL_SECOND, INTERVAL_MICROSECOND , + INTERVAL_YEAR_MONTH, INTERVAL_DAY_HOUR, INTERVAL_DAY_MINUTE, INTERVAL_DAY_SECOND, + INTERVAL_HOUR_MINUTE, INTERVAL_HOUR_SECOND, INTERVAL_MINUTE_SECOND, + INTERVAL_DAY_MICROSECOND, INTERVAL_HOUR_MICROSECOND, INTERVAL_MINUTE_MICROSECOND, + INTERVAL_SECOND_MICROSECOND }; @@ -763,3 +764,20 @@ public: maybe_null=1; } }; + + +class Item_func_timestamp_diff :public Item_int_func +{ + const interval_type int_type; +public: + Item_func_timestamp_diff(Item *a,Item *b,interval_type type_arg) + :Item_int_func(a,b), int_type(type_arg) {} + const char *func_name() const { return "timestamp_diff"; } + longlong val_int(); + void fix_length_and_dec() + { + decimals=0; + maybe_null=1; + } + void print(String *str); +}; |