Changeset: 524d1cb77dfd for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB/rev/524d1cb77dfd
Modified Files:
sql/common/sql_types.c
sql/server/sql_parser.y
Branch: escape-sequences
Log Message:
timestampdiff common cases
diffs (31 lines):
diff --git a/sql/common/sql_types.c b/sql/common/sql_types.c
--- a/sql/common/sql_types.c
+++ b/sql/common/sql_types.c
@@ -1360,6 +1360,14 @@ sqltypeinit( sql_allocator *sa)
sql_create_func(sa, "timestampadd", "mtime",
"odbc_timestamp_add_month_time", FALSE, FALSE, SCALE_NONE, 0, TMESTAMP, 2, TME,
MONINT);
sql_create_func(sa, "timestampadd", "mtime",
"odbc_timestamp_add_msec_date", FALSE, FALSE, SCALE_NONE, 0, TMESTAMP, 2, DTE,
SECINT);
// odbc timestampdiff
+ sql_create_func(sa, "timestampdiff", "mtime",
"timestamp_sub_msec_interval", FALSE, FALSE, SCALE_NONE, 0, TMESTAMP, 2,
TMESTAMP, SECINT);
+ sql_create_func(sa, "timestampdiff", "mtime",
"timestamp_sub_msec_interval", FALSE, FALSE, SCALE_NONE, 0, TMESTAMP, 2,
TMESTAMP, DAYINT);
+ sql_create_func(sa, "timestampdiff", "mtime",
"timestamp_sub_month_interval", FALSE, FALSE, SCALE_NONE, 0, TMESTAMP, 2,
TMESTAMP, MONINT);
+ sql_create_func(sa, "timestampdiff", "mtime",
"timestamp_sub_msec_interval", FALSE, FALSE, SCALE_NONE, 0, TMESTAMPTZ, 2,
TMESTAMPTZ, SECINT);
+ sql_create_func(sa, "timestampdiff", "mtime",
"timestamp_sub_msec_interval", FALSE, FALSE, SCALE_NONE, 0, TMESTAMPTZ, 2,
TMESTAMPTZ, DAYINT);
+ sql_create_func(sa, "timestampdiff", "mtime",
"timestamp_sub_month_interval", FALSE, FALSE, SCALE_NONE, 0, TMESTAMPTZ, 2,
TMESTAMPTZ, MONINT);
+ // TODO corner cases as described in microsoft odbc timestampdiff spec
+
// end odbc
sql_create_func(sa, "local_timezone", "mtime", "local_timezone", FALSE,
FALSE, SCALE_FIX, 0, SECINT, 0);
diff --git a/sql/server/sql_parser.y b/sql/server/sql_parser.y
--- a/sql/server/sql_parser.y
+++ b/sql/server/sql_parser.y
@@ -6487,8 +6487,7 @@ odbc_datetime_func:
}
| TIMESTAMPDIFF '(' odbc_tsi_qualifier ',' intval ',' search_condition ')'
{ dlist *l = L();
- // TODO sql_diff or custom func ?
- append_list( l, append_string(L(), sa_strdup(SA, "sql_sub")));
+ append_list( l, append_string(L(), sa_strdup(SA,
"timestampdiff")));
append_int(l, FALSE); /* ignore distinct */
sql_subtype t;
lng i = 0;
_______________________________________________
checkin-list mailing list -- [email protected]
To unsubscribe send an email to [email protected]