You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@empire-db.apache.org by do...@apache.org on 2019/07/10 08:44:14 UTC
[empire-db] branch master updated: EMPIREDB-293: Distinguish
DATETIME and TIMESTAMP
This is an automated email from the ASF dual-hosted git repository.
doebele pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/empire-db.git
The following commit(s) were added to refs/heads/master by this push:
new abc0623 EMPIREDB-293: Distinguish DATETIME and TIMESTAMP
abc0623 is described below
commit abc06236a6480f88579a5f4278f78bde01340b16
Author: Rainer Döbele <do...@apache.org>
AuthorDate: Wed Jul 10 10:44:09 2019 +0200
EMPIREDB-293: Distinguish DATETIME and TIMESTAMP
---
.../org/apache/empire/commons/ObjectUtils.java | 15 ++
.../org/apache/empire/db/DBDatabaseDriver.java | 29 ++--
.../empire/db/derby/DBDatabaseDriverDerby.java | 4 +-
.../apache/empire/db/h2/DBDatabaseDriverH2.java | 4 +-
.../empire/db/hsql/DBDatabaseDriverHSql.java | 4 +-
.../empire/db/mysql/DBDatabaseDriverMySQL.java | 4 +-
.../empire/db/oracle/DBDatabaseDriverOracle.java | 15 +-
.../db/postgresql/DBDatabaseDriverPostgreSQL.java | 4 +-
.../empire/db/sqlite/DBDatabaseDriverSQLite.java | 161 ++++++++-------------
.../empire/db/sqlserver/DBDatabaseDriverMSSQL.java | 5 +-
10 files changed, 119 insertions(+), 126 deletions(-)
diff --git a/empire-db/src/main/java/org/apache/empire/commons/ObjectUtils.java b/empire-db/src/main/java/org/apache/empire/commons/ObjectUtils.java
index b10066e..8884c3a 100644
--- a/empire-db/src/main/java/org/apache/empire/commons/ObjectUtils.java
+++ b/empire-db/src/main/java/org/apache/empire/commons/ObjectUtils.java
@@ -90,6 +90,21 @@ public final class ObjectUtils
}
/**
+ * returns the string length of an object
+ * @param o the object to check
+ * @return the string length of the object
+ */
+ public static int lengthOf(Object o)
+ {
+ if (o==null || o==ObjectUtils.NO_VALUE)
+ return 0;
+ if ((o instanceof String))
+ return ((String)o).length();
+ // convert
+ return o.toString().length();
+ }
+
+ /**
* Compares two objects for equality
*
* @param o1 the first object
diff --git a/empire-db/src/main/java/org/apache/empire/db/DBDatabaseDriver.java b/empire-db/src/main/java/org/apache/empire/db/DBDatabaseDriver.java
index f7f05f3..b8bef1d 100644
--- a/empire-db/src/main/java/org/apache/empire/db/DBDatabaseDriver.java
+++ b/empire-db/src/main/java/org/apache/empire/db/DBDatabaseDriver.java
@@ -63,14 +63,16 @@ public abstract class DBDatabaseDriver implements Serializable
public static final int SQL_CONCAT_EXPR = 8; // Oracle: ||
public static final int SQL_PSEUDO_TABLE = 9; // Oracle: "DUAL"
// data types
- public static final int SQL_BOOLEAN_TRUE = 10; // Oracle: "'Y'"; MSSQL: "1"
- public static final int SQL_BOOLEAN_FALSE = 11; // Oracle: "'N'"; MSSQL: "0"
- public static final int SQL_CURRENT_DATE = 20; // Oracle: "sysdate"
- public static final int SQL_DATE_PATTERN = 21; // "yyyy.MM.dd"
- public static final int SQL_DATE_TEMPLATE = 22; // Oracle: "TO_DATE('{0}', 'YYYY-MM-DD')"
- public static final int SQL_CURRENT_DATETIME = 25; // Oracle: "sysdate"
- public static final int SQL_DATETIME_PATTERN = 26; // "yyyy.MM.dd HH:mm:ss"
- public static final int SQL_DATETIME_TEMPLATE= 27; // Oracle: "TO_DATE('{0}', 'YYYY-MM-DD HH24:MI:SS')"
+ public static final int SQL_BOOLEAN_TRUE = 10; // Oracle: "'Y'"; MSSQL: "1"
+ public static final int SQL_BOOLEAN_FALSE = 11; // Oracle: "'N'"; MSSQL: "0"
+ public static final int SQL_CURRENT_DATE = 20; // Oracle: "sysdate"
+ public static final int SQL_DATE_PATTERN = 21; // "yyyy-MM-dd" // SimpleDateFormat
+ public static final int SQL_DATE_TEMPLATE = 22; // Oracle: "TO_DATE('{0}', 'YYYY-MM-DD')"
+ public static final int SQL_DATETIME_PATTERN = 23; // "yyyy-MM-dd HH:mm:ss.SSS" // SimpleDateFormat
+ public static final int SQL_DATETIME_TEMPLATE = 24; // Oracle: "TO_DATE('{0}', 'YYYY-MM-DD HH24:MI:SS')"
+ public static final int SQL_CURRENT_TIMESTAMP = 25; // Oracle: "systimestamp"
+ public static final int SQL_TIMESTAMP_PATTERN = 26; // "yyyy-MM-dd HH:mm:ss.SSS" // SimpleDateFormat
+ public static final int SQL_TIMESTAMP_TEMPLATE= 27; // Oracle: "TO_TIMESTAMP('{0}', 'YYYY.MM.DD HH24:MI:SS.FF')";
// functions
public static final int SQL_FUNC_COALESCE = 100; // Oracle: nvl(?, {0})
public static final int SQL_FUNC_SUBSTRING = 101; // Oracle: substr(?,{0})
@@ -721,12 +723,13 @@ public abstract class DBDatabaseDriver implements Serializable
case DATE:
return getSQLDateTimeString(value, SQL_DATE_TEMPLATE, SQL_DATE_PATTERN, SQL_CURRENT_DATE);
case DATETIME:
- case TIMESTAMP:
- // System date is special case
- if (!DBDatabase.SYSDATE.equals(value) && value.toString().length()<=10)
- return getSQLDateTimeString(value, SQL_DATE_TEMPLATE, SQL_DATE_PATTERN, SQL_CURRENT_DATETIME);
+ // Only date (without time) provided?
+ if (!DBDatabase.SYSDATE.equals(value) && ObjectUtils.lengthOf(value)<=10)
+ return getSQLDateTimeString(value, SQL_DATE_TEMPLATE, SQL_DATE_PATTERN, SQL_CURRENT_TIMESTAMP);
// Complete Date-Time Object with time
- return getSQLDateTimeString(value, SQL_DATETIME_TEMPLATE, SQL_DATETIME_PATTERN, SQL_CURRENT_DATETIME);
+ return getSQLDateTimeString(value, SQL_DATETIME_TEMPLATE, SQL_DATETIME_PATTERN, SQL_CURRENT_TIMESTAMP);
+ case TIMESTAMP:
+ return getSQLDateTimeString(value, SQL_TIMESTAMP_TEMPLATE, SQL_TIMESTAMP_PATTERN, SQL_CURRENT_TIMESTAMP);
case TEXT:
case VARCHAR:
case CHAR:
diff --git a/empire-db/src/main/java/org/apache/empire/db/derby/DBDatabaseDriverDerby.java b/empire-db/src/main/java/org/apache/empire/db/derby/DBDatabaseDriverDerby.java
index 86352f6..e60b6a8 100644
--- a/empire-db/src/main/java/org/apache/empire/db/derby/DBDatabaseDriverDerby.java
+++ b/empire-db/src/main/java/org/apache/empire/db/derby/DBDatabaseDriverDerby.java
@@ -194,9 +194,11 @@ public class DBDatabaseDriverDerby extends DBDatabaseDriver
case SQL_CURRENT_DATE: return "CURRENT_DATE()";
case SQL_DATE_PATTERN: return "yyyy-MM-dd";
case SQL_DATE_TEMPLATE: return "'{0}'";
- case SQL_CURRENT_DATETIME: return "CURRENT_TIMESTAMP";
case SQL_DATETIME_PATTERN: return "yyyy-MM-dd HH:mm:ss";
case SQL_DATETIME_TEMPLATE: return "'{0}'";
+ case SQL_CURRENT_TIMESTAMP: return "CURRENT_TIMESTAMP";
+ case SQL_TIMESTAMP_PATTERN: return "yyyy-MM-dd HH:mm:ss";
+ case SQL_TIMESTAMP_TEMPLATE: return "'{0}'";
// functions
case SQL_FUNC_COALESCE: return "coalesce(?, {0})";
case SQL_FUNC_SUBSTRING: return "substr(?, {0})";
diff --git a/empire-db/src/main/java/org/apache/empire/db/h2/DBDatabaseDriverH2.java b/empire-db/src/main/java/org/apache/empire/db/h2/DBDatabaseDriverH2.java
index 09342fd..5b168ba 100644
--- a/empire-db/src/main/java/org/apache/empire/db/h2/DBDatabaseDriverH2.java
+++ b/empire-db/src/main/java/org/apache/empire/db/h2/DBDatabaseDriverH2.java
@@ -241,9 +241,11 @@ public class DBDatabaseDriverH2 extends DBDatabaseDriver
case SQL_CURRENT_DATE: return "CURRENT_DATE()";
case SQL_DATE_PATTERN: return "yyyy-MM-dd";
case SQL_DATE_TEMPLATE: return "'{0}'";
- case SQL_CURRENT_DATETIME: return "NOW()";
case SQL_DATETIME_PATTERN: return "yyyy-MM-dd HH:mm:ss";
case SQL_DATETIME_TEMPLATE: return "'{0}'";
+ case SQL_CURRENT_TIMESTAMP: return "NOW()";
+ case SQL_TIMESTAMP_PATTERN: return "yyyy-MM-dd HH:mm:ss";
+ case SQL_TIMESTAMP_TEMPLATE: return "'{0}'";
// functions
case SQL_FUNC_COALESCE: return "coalesce(?, {0})";
case SQL_FUNC_SUBSTRING: return "substring(?, {0})";
diff --git a/empire-db/src/main/java/org/apache/empire/db/hsql/DBDatabaseDriverHSql.java b/empire-db/src/main/java/org/apache/empire/db/hsql/DBDatabaseDriverHSql.java
index 0c45e13..1ae3104 100644
--- a/empire-db/src/main/java/org/apache/empire/db/hsql/DBDatabaseDriverHSql.java
+++ b/empire-db/src/main/java/org/apache/empire/db/hsql/DBDatabaseDriverHSql.java
@@ -133,9 +133,11 @@ public class DBDatabaseDriverHSql extends DBDatabaseDriver
case SQL_CURRENT_DATE: return "CURRENT_DATE";
case SQL_DATE_PATTERN: return "yyyy-MM-dd";
case SQL_DATE_TEMPLATE: return "'{0}'";
- case SQL_CURRENT_DATETIME: return "CURRENT_TIMESTAMP";
case SQL_DATETIME_PATTERN: return "yyyy-MM-dd HH:mm:ss.S";
case SQL_DATETIME_TEMPLATE: return "'{0}'";
+ case SQL_CURRENT_TIMESTAMP: return "CURRENT_TIMESTAMP";
+ case SQL_TIMESTAMP_PATTERN: return "yyyy-MM-dd HH:mm:ss.S";
+ case SQL_TIMESTAMP_TEMPLATE:return "'{0}'";
// functions
case SQL_FUNC_COALESCE: return "coalesce(?, {0})";
case SQL_FUNC_SUBSTRING: return "substr(?, {0})";
diff --git a/empire-db/src/main/java/org/apache/empire/db/mysql/DBDatabaseDriverMySQL.java b/empire-db/src/main/java/org/apache/empire/db/mysql/DBDatabaseDriverMySQL.java
index d366632..7b57ba5 100644
--- a/empire-db/src/main/java/org/apache/empire/db/mysql/DBDatabaseDriverMySQL.java
+++ b/empire-db/src/main/java/org/apache/empire/db/mysql/DBDatabaseDriverMySQL.java
@@ -1001,9 +1001,11 @@ public class DBDatabaseDriverMySQL extends DBDatabaseDriver
case SQL_CURRENT_DATE: return "CURRENT_DATE()";
case SQL_DATE_PATTERN: return "yyyy-MM-dd";
case SQL_DATE_TEMPLATE: return "'{0}'";
- case SQL_CURRENT_DATETIME: return "NOW()";
case SQL_DATETIME_PATTERN: return "yyyy-MM-dd HH:mm:ss";
case SQL_DATETIME_TEMPLATE: return "'{0}'";
+ case SQL_CURRENT_TIMESTAMP: return "NOW()";
+ case SQL_TIMESTAMP_PATTERN: return "yyyy-MM-dd HH:mm:ss";
+ case SQL_TIMESTAMP_TEMPLATE: return "'{0}'";
// functions
case SQL_FUNC_COALESCE: return "coalesce(?, {0})";
case SQL_FUNC_SUBSTRING: return "substring(?, {0})";
diff --git a/empire-db/src/main/java/org/apache/empire/db/oracle/DBDatabaseDriverOracle.java b/empire-db/src/main/java/org/apache/empire/db/oracle/DBDatabaseDriverOracle.java
index 9161ca4..7be62db 100644
--- a/empire-db/src/main/java/org/apache/empire/db/oracle/DBDatabaseDriverOracle.java
+++ b/empire-db/src/main/java/org/apache/empire/db/oracle/DBDatabaseDriverOracle.java
@@ -162,9 +162,11 @@ public class DBDatabaseDriverOracle extends DBDatabaseDriver
case SQL_CURRENT_DATE: return "sysdate";
case SQL_DATE_PATTERN: return "yyyy-MM-dd";
case SQL_DATE_TEMPLATE: return "TO_DATE('{0}', 'YYYY-MM-DD')";
- case SQL_CURRENT_DATETIME: return "sysdate";
- case SQL_DATETIME_PATTERN: return "yyyy-MM-dd HH:mm:ss";
+ case SQL_DATETIME_PATTERN: return "yyyy-MM-dd HH:mm:ss.SSS";
case SQL_DATETIME_TEMPLATE: return "TO_DATE('{0}', 'YYYY-MM-DD HH24:MI:SS')";
+ case SQL_CURRENT_TIMESTAMP: return "systimestamp";
+ case SQL_TIMESTAMP_PATTERN: return "yyyy-MM-dd HH:mm:ss.SSS";
+ case SQL_TIMESTAMP_TEMPLATE: return "TO_TIMESTAMP('{0}', 'YYYY.MM.DD HH24:MI:SS.FF')";
// functions
case SQL_FUNC_COALESCE: return "nvl(?, {0})";
case SQL_FUNC_SUBSTRING: return "substr(?, {0})";
@@ -243,12 +245,17 @@ public class DBDatabaseDriverOracle extends DBDatabaseDriver
// Convert to date
case DATE:
case DATETIME:
- case TIMESTAMP:
if (format != null)
{ // Convert using a format string
return "to_date(?, '"+format.toString()+"')";
}
return "to_date(?)";
+ case TIMESTAMP:
+ if (format != null)
+ { // Convert using a format string
+ return "to_timestamp(?, '"+format.toString()+"')";
+ }
+ return "to_timestamp(?)";
// Unknown Type
default:
log.error("getConvertPhrase: unknown type " + destType);
@@ -349,7 +356,7 @@ public class DBDatabaseDriverOracle extends DBDatabaseDriver
ResultSet rs = null;
try
{ // Oracle Timestamp query
- rs = executeQuery("select sysdate from dual", null, false, conn);
+ rs = executeQuery("SELECT systimestamp FROM DUAL", null, false, conn);
return (rs.next() ? rs.getTimestamp(1) : null);
} catch (SQLException e) {
// throw exception
diff --git a/empire-db/src/main/java/org/apache/empire/db/postgresql/DBDatabaseDriverPostgreSQL.java b/empire-db/src/main/java/org/apache/empire/db/postgresql/DBDatabaseDriverPostgreSQL.java
index 0bb4732..ce279b5 100644
--- a/empire-db/src/main/java/org/apache/empire/db/postgresql/DBDatabaseDriverPostgreSQL.java
+++ b/empire-db/src/main/java/org/apache/empire/db/postgresql/DBDatabaseDriverPostgreSQL.java
@@ -341,9 +341,11 @@ public class DBDatabaseDriverPostgreSQL extends DBDatabaseDriver
case SQL_CURRENT_DATE: return "CURRENT_DATE";
case SQL_DATE_PATTERN: return "yyyy-MM-dd";
case SQL_DATE_TEMPLATE: return "'{0}'";
- case SQL_CURRENT_DATETIME: return "NOW()";
case SQL_DATETIME_PATTERN: return "yyyy-MM-dd HH:mm:ss";
case SQL_DATETIME_TEMPLATE: return "'{0}'";
+ case SQL_CURRENT_TIMESTAMP: return "NOW()";
+ case SQL_TIMESTAMP_PATTERN: return "yyyy-MM-dd HH:mm:ss";
+ case SQL_TIMESTAMP_TEMPLATE: return "'{0}'";
// functions
case SQL_FUNC_COALESCE: return "coalesce(?, {0})";
case SQL_FUNC_SUBSTRING: return "substring(?, {0})";
diff --git a/empire-db/src/main/java/org/apache/empire/db/sqlite/DBDatabaseDriverSQLite.java b/empire-db/src/main/java/org/apache/empire/db/sqlite/DBDatabaseDriverSQLite.java
index 2b6c935..a516c1e 100644
--- a/empire-db/src/main/java/org/apache/empire/db/sqlite/DBDatabaseDriverSQLite.java
+++ b/empire-db/src/main/java/org/apache/empire/db/sqlite/DBDatabaseDriverSQLite.java
@@ -306,109 +306,64 @@ public class DBDatabaseDriverSQLite extends DBDatabaseDriver
{
switch (phrase)
{
-
- // sql-phrases
- case SQL_NULL_VALUE:
- return "null";
- case SQL_PARAMETER:
- return " ? ";
- case SQL_RENAME_TABLE:
- return " ";
- case SQL_RENAME_COLUMN:
- return " AS ";
- case SQL_DATABASE_LINK:
- return "@";
- case SQL_QUOTES_OPEN:
- return "`";
- case SQL_QUOTES_CLOSE:
- return "`";
- case SQL_CONCAT_EXPR:
- return "concat(?, {0})";
- // data types
- case SQL_BOOLEAN_TRUE:
- return "1";
- case SQL_BOOLEAN_FALSE:
- return "0";
- case SQL_CURRENT_DATE:
- return "SELECT date('now','localtime');";
- case SQL_DATE_PATTERN:
- return "yyyy-MM-dd";
- case SQL_DATE_TEMPLATE:
- return "'{0}'";
- case SQL_CURRENT_DATETIME:
- return "NOW()";
- case SQL_DATETIME_PATTERN:
- return "yyyy-MM-dd hh:mm:ss.sss";
- case SQL_DATETIME_TEMPLATE:
- return "'{0}'";
- // functions
- case SQL_FUNC_COALESCE:
- return "coalesce(?, {0})";
- case SQL_FUNC_SUBSTRING:
- return "substring(?, {0})";
- case SQL_FUNC_SUBSTRINGEX:
- return "substring(?, {0}, {1})";
- case SQL_FUNC_REPLACE:
- return "replace(?, {0}, {1})";
- case SQL_FUNC_REVERSE:
- return "reverse(?)";
- case SQL_FUNC_STRINDEX:
- return "instr(?, {0})";
- case SQL_FUNC_STRINDEXFROM:
- return "locate({0}, ?, {1})";
- case SQL_FUNC_LENGTH:
- return "length(?)";
- case SQL_FUNC_UPPER:
- return "upper(?)";
- case SQL_FUNC_LOWER:
- return "lcase(?)";
- case SQL_FUNC_TRIM:
- return "trim(?)";
- case SQL_FUNC_LTRIM:
- return "ltrim(?)";
- case SQL_FUNC_RTRIM:
- return "rtrim(?)";
- case SQL_FUNC_ESCAPE:
- return "? escape '{0}'";
- // Numeric
- case SQL_FUNC_ABS:
- return "abs(?)";
- case SQL_FUNC_ROUND:
- return "round(?,{0})";
- case SQL_FUNC_TRUNC:
- return "truncate(?,{0})";
- case SQL_FUNC_CEILING:
- return "ceiling(?)";
- case SQL_FUNC_FLOOR:
- return "floor(?)";
- case SQL_FUNC_MODULO:
- return "mod(?,{0})";
- // Date
- case SQL_FUNC_DAY:
- return "day(?)";
- case SQL_FUNC_MONTH:
- return "month(?)";
- case SQL_FUNC_YEAR:
- return "year(?)";
- // Aggregation
- case SQL_FUNC_SUM:
- return "sum(?)";
- case SQL_FUNC_MAX:
- return "max(?)";
- case SQL_FUNC_MIN:
- return "min(?)";
- case SQL_FUNC_AVG:
- return "avg(?)";
- // Others
- case SQL_FUNC_DECODE:
- return "case ? {0} end";
- case SQL_FUNC_DECODE_SEP:
- return " ";
- case SQL_FUNC_DECODE_PART:
- return "when {0} then {1}";
- case SQL_FUNC_DECODE_ELSE:
- return "else {0}";
- // Not defined
+
+ // sql-phrases
+ case SQL_NULL_VALUE: return "null";
+ case SQL_PARAMETER: return " ? ";
+ case SQL_RENAME_TABLE: return " ";
+ case SQL_RENAME_COLUMN: return " AS ";
+ case SQL_DATABASE_LINK: return "@";
+ case SQL_QUOTES_OPEN: return "`";
+ case SQL_QUOTES_CLOSE: return "`";
+ case SQL_CONCAT_EXPR: return "concat(?, {0})";
+ // data types
+ case SQL_BOOLEAN_TRUE: return "1";
+ case SQL_BOOLEAN_FALSE: return "0";
+ case SQL_CURRENT_DATE: return "SELECT date('now','localtime');";
+ case SQL_DATE_PATTERN: return "yyyy-MM-dd";
+ case SQL_DATE_TEMPLATE: return "'{0}'";
+ case SQL_DATETIME_PATTERN: return "yyyy-MM-dd hh:mm:ss.sss";
+ case SQL_DATETIME_TEMPLATE: return "'{0}'";
+ case SQL_CURRENT_TIMESTAMP: return "NOW()";
+ case SQL_TIMESTAMP_PATTERN: return "yyyy-MM-dd hh:mm:ss.sss";
+ case SQL_TIMESTAMP_TEMPLATE: return "'{0}'";
+ // functions
+ case SQL_FUNC_COALESCE: return "coalesce(?, {0})";
+ case SQL_FUNC_SUBSTRING: return "substring(?, {0})";
+ case SQL_FUNC_SUBSTRINGEX: return "substring(?, {0}, {1})";
+ case SQL_FUNC_REPLACE: return "replace(?, {0}, {1})";
+ case SQL_FUNC_REVERSE: return "reverse(?)";
+ case SQL_FUNC_STRINDEX: return "instr(?, {0})";
+ case SQL_FUNC_STRINDEXFROM: return "locate({0}, ?, {1})";
+ case SQL_FUNC_LENGTH: return "length(?)";
+ case SQL_FUNC_UPPER: return "upper(?)";
+ case SQL_FUNC_LOWER: return "lcase(?)";
+ case SQL_FUNC_TRIM: return "trim(?)";
+ case SQL_FUNC_LTRIM: return "ltrim(?)";
+ case SQL_FUNC_RTRIM: return "rtrim(?)";
+ case SQL_FUNC_ESCAPE: return "? escape '{0}'";
+ // Numeric
+ case SQL_FUNC_ABS: return "abs(?)";
+ case SQL_FUNC_ROUND: return "round(?,{0})";
+ case SQL_FUNC_TRUNC: return "truncate(?,{0})";
+ case SQL_FUNC_CEILING: return "ceiling(?)";
+ case SQL_FUNC_FLOOR: return "floor(?)";
+ case SQL_FUNC_MODULO: return "mod(?,{0})";
+ // Date
+ case SQL_FUNC_DAY: return "day(?)";
+ case SQL_FUNC_MONTH: return "month(?)";
+ case SQL_FUNC_YEAR: return "year(?)";
+ // Aggregation
+ case SQL_FUNC_SUM: return "sum(?)";
+ case SQL_FUNC_MAX: return "max(?)";
+ case SQL_FUNC_MIN: return "min(?)";
+ case SQL_FUNC_AVG: return "avg(?)";
+ // Others
+ case SQL_FUNC_DECODE: return "case ? {0} end";
+ case SQL_FUNC_DECODE_SEP: return " ";
+ case SQL_FUNC_DECODE_PART: return "when {0} then {1}";
+ case SQL_FUNC_DECODE_ELSE: return "else {0}";
+ // Not defined
default:
log.error("SQL phrase " + String.valueOf(phrase) + " is not defined!");
return "";
diff --git a/empire-db/src/main/java/org/apache/empire/db/sqlserver/DBDatabaseDriverMSSQL.java b/empire-db/src/main/java/org/apache/empire/db/sqlserver/DBDatabaseDriverMSSQL.java
index 3cf55cb..be4c6e5 100644
--- a/empire-db/src/main/java/org/apache/empire/db/sqlserver/DBDatabaseDriverMSSQL.java
+++ b/empire-db/src/main/java/org/apache/empire/db/sqlserver/DBDatabaseDriverMSSQL.java
@@ -308,10 +308,13 @@ public class DBDatabaseDriverMSSQL extends DBDatabaseDriver
case SQL_CURRENT_DATE: return "convert(char, getdate(), 111)";
case SQL_DATE_PATTERN: return "yyyy-MM-dd";
case SQL_DATE_TEMPLATE: return "convert(date, '{0}', 111)";
- case SQL_CURRENT_DATETIME: return "getdate()";
case SQL_DATETIME_PATTERN: return "yyyy-MM-dd HH:mm:ss.SSS";
case SQL_DATETIME_TEMPLATE: return isUseDateTime2() ? "convert(datetime2, '{0}', 121)"
: "convert(datetime, '{0}', 121)";
+ case SQL_CURRENT_TIMESTAMP: return "getdate()";
+ case SQL_TIMESTAMP_PATTERN: return "yyyy-MM-dd HH:mm:ss.SSS";
+ case SQL_TIMESTAMP_TEMPLATE: return isUseDateTime2() ? "convert(datetime2, '{0}', 121)"
+ : "convert(datetime, '{0}', 121)";
// functions
case SQL_FUNC_COALESCE: return "coalesce(?, {0})";
case SQL_FUNC_SUBSTRING: return "substring(?, {0}, 4000)";