summaryrefslogtreecommitdiff
path: root/sql/item_timefunc.h
diff options
context:
space:
mode:
authorunknown <gluh@gluh.mysql.r18.ru>2003-12-08 14:41:41 +0400
committerunknown <gluh@gluh.mysql.r18.ru>2003-12-08 14:41:41 +0400
commit417354eaa127934f5aadcc9b245561a1519ba998 (patch)
tree9c147b6d7fd7bc40e51a59e4315562f59ccbcde0 /sql/item_timefunc.h
parent4379cbcf3056a33f41ddf489828203a6c03e793f (diff)
downloadmariadb-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.h28
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);
+};