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]

Reply via email to