Add mappings

This commit is contained in:
Timo Westkämper 2015-02-15 23:02:27 +02:00
parent ffb5fa1091
commit f094e643a6
8 changed files with 60 additions and 3 deletions

View File

@ -74,6 +74,14 @@ public class CUBRIDTemplates extends SQLTemplates {
add(Ops.DateTimeOps.ADD_MINUTES, "date_add({0}, interval {1s} minute)");
add(Ops.DateTimeOps.ADD_SECONDS, "date_add({0}, interval {1s} second)");
add(Ops.DateTimeOps.TRUNC_YEAR, "trunc({0},'yyyy')");
add(Ops.DateTimeOps.TRUNC_MONTH, "trunc({0},'mm')");
add(Ops.DateTimeOps.TRUNC_WEEK, "trunc({0},'day')");
add(Ops.DateTimeOps.TRUNC_DAY, "trunc({0},'dd')");
add(Ops.DateTimeOps.TRUNC_HOUR, "timestamp(date({0}),concat(hour({0}),':00:00'))");
add(Ops.DateTimeOps.TRUNC_MINUTE, "timestamp(date({0}),concat(hour({0}),':',minute({0}),':00'))");
add(Ops.DateTimeOps.TRUNC_SECOND, "timestamp(date({0}),concat(hour({0}),':',minute({0}),':',second({0})))");
add(Ops.MathOps.LN, "ln({0})");
add(Ops.MathOps.LOG, "(ln({0}) / ln({1}))");
add(Ops.MathOps.COSH, "(exp({0}) + exp({0} * -1)) / 2");

View File

@ -105,6 +105,15 @@ public class DerbyTemplates extends SQLTemplates {
add(Ops.DateTimeOps.DIFF_MINUTES, "{fn timestampdiff(SQL_TSI_MINUTE, {0}, {1})}");
add(Ops.DateTimeOps.DIFF_SECONDS, "{fn timestampdiff(SQL_TSI_SECOND, {0}, {1})}");
// yyyy-MM-dd hh:mm:ss
add(Ops.DateTimeOps.TRUNC_YEAR, "timestamp(substr(cast({0} as char(30)),1,4)||'-01-01 00:00:00')");
add(Ops.DateTimeOps.TRUNC_MONTH, "timestamp(substr(cast({0} as char(30)),1,7)||'-01 00:00:00')");
// TODO weeks
add(Ops.DateTimeOps.TRUNC_DAY, "timestamp(substr(cast({0} as char(30)),1,10)||' 00:00:00')");
add(Ops.DateTimeOps.TRUNC_HOUR, "timestamp(substr(cast({0} as char(30)),1,13)||':00:00')");
add(Ops.DateTimeOps.TRUNC_MINUTE, "timestamp(substr(cast({0} as char(30)),1,16)||':00')");
add(Ops.DateTimeOps.TRUNC_SECOND, "timestamp(substr(cast({0} as char(30)),1,19))");
// left via substr
add(Ops.StringOps.LEFT, "substr({0},1,{1})");

View File

@ -67,6 +67,14 @@ public class H2Templates extends SQLTemplates {
addTypeNameToCode("uuid", Types.BINARY);
addTypeNameToCode("serial", Types.INTEGER);
addTypeNameToCode("varchar_ignorecase", Types.VARCHAR);
add(Ops.DateTimeOps.TRUNC_YEAR, "parsedatetime(formatdatetime({0},'yyyy'),'yyyy')");
add(Ops.DateTimeOps.TRUNC_MONTH, "parsedatetime(formatdatetime({0},'yyyy-MM'),'yyyy-MM')");
add(Ops.DateTimeOps.TRUNC_WEEK, "parsedatetime(formatdatetime({0},'YYYY-ww'),'YYYY-ww')");
add(Ops.DateTimeOps.TRUNC_DAY, "parsedatetime(formatdatetime({0},'yyyy-MM-dd'),'yyyy-MM-dd')");
add(Ops.DateTimeOps.TRUNC_HOUR, "parsedatetime(formatdatetime({0},'yyyy-MM-dd HH'),'yyyy-MM-dd HH')");
add(Ops.DateTimeOps.TRUNC_MINUTE, "parsedatetime(formatdatetime({0},'yyyy-MM-dd HH:mm'),'yyyy-MM-dd HH:mm')");
add(Ops.DateTimeOps.TRUNC_SECOND, "parsedatetime(formatdatetime({0},'yyyy-MM-dd HH:mm:ss'),'yyyy-MM-dd HH:mm:ss')");
}
}

View File

@ -83,6 +83,14 @@ public class HSQLDBTemplates extends SQLTemplates {
add(Ops.DateTimeOps.DIFF_MINUTES, "datediff('mi', {0}, {1})");
add(Ops.DateTimeOps.DIFF_SECONDS, "datediff('ss', {0}, {1})");
add(Ops.DateTimeOps.TRUNC_YEAR, "trunc({0},'YY')");
add(Ops.DateTimeOps.TRUNC_MONTH, "trunc({0},'MM')");
add(Ops.DateTimeOps.TRUNC_WEEK, "trunc({0},'WW')");
add(Ops.DateTimeOps.TRUNC_DAY, "trunc({0},'DD')");
add(Ops.DateTimeOps.TRUNC_HOUR, "trunc({0},'HH')");
add(Ops.DateTimeOps.TRUNC_MINUTE, "trunc({0},'MI')");
add(Ops.DateTimeOps.TRUNC_SECOND, "trunc({0},'SS')");
add(Ops.DateTimeOps.DATE, "convert({0}, date)");
addTypeNameToCode("character", Types.CHAR, true);

View File

@ -149,6 +149,14 @@ public class MySQLTemplates extends SQLTemplates {
add(Ops.DateTimeOps.DIFF_MINUTES, "timestampdiff(minute,{0},{1})");
add(Ops.DateTimeOps.DIFF_SECONDS, "timestampdiff(second,{0},{1})");
add(Ops.DateTimeOps.TRUNC_YEAR, "str_to_date(concat(date_format({0},'%Y'),'-1-1'),'%Y-%m-%d')");
add(Ops.DateTimeOps.TRUNC_MONTH, "str_to_date(concat(date_format({0},'%Y-%m'),'-1'),'%Y-%m-%d')");
add(Ops.DateTimeOps.TRUNC_WEEK, "str_to_date(concat(date_format({0},'%Y-%u'),'-2'),'%Y-%u-%w')");
add(Ops.DateTimeOps.TRUNC_DAY, "str_to_date(date_format({0},'%Y-%m-%d'),'%Y-%m-%d')");
add(Ops.DateTimeOps.TRUNC_HOUR, "str_to_date(date_format({0},'%Y-%m-%d %k'),'%Y-%m-%d %k')");
add(Ops.DateTimeOps.TRUNC_MINUTE, "str_to_date(date_format({0},'%Y-%m-%d %k:%i'),'%Y-%m-%d %k:%i')");
add(Ops.DateTimeOps.TRUNC_SECOND, "str_to_date(date_format({0},'%Y-%m-%d %k:%i:%s'),'%Y-%m-%d %k:%i:%s')");
addTypeNameToCode("bool", Types.BIT, true);
addTypeNameToCode("tinyint unsigned", Types.TINYINT);
addTypeNameToCode("bigint unsigned", Types.BIGINT);

View File

@ -123,9 +123,18 @@ public class SQLServerTemplates extends SQLTemplates {
add(Ops.DateTimeOps.DIFF_MINUTES, "datediff(minute,{0},{1})");
add(Ops.DateTimeOps.DIFF_SECONDS, "datediff(second,{0},{1})");
add(Ops.DateTimeOps.TRUNC_YEAR, "CONVERT(DATETIME, CONVERT(VARCHAR(4), {0}, 120) + '-01-01')");
add(Ops.DateTimeOps.TRUNC_MONTH, "CONVERT(DATETIME, CONVERT(VARCHAR(7), {0}, 120) + '-01')");
// TODO week
add(Ops.DateTimeOps.TRUNC_DAY, "CONVERT(DATETIME, CONVERT(VARCHAR(10), {0}, 120))");
add(Ops.DateTimeOps.TRUNC_HOUR, "CONVERT(DATETIME, CONVERT(VARCHAR(13), {0}, 120) + ':00:00')");
add(Ops.DateTimeOps.TRUNC_MINUTE, "CONVERT(DATETIME, CONVERT(VARCHAR(16), {0}, 120) + ':00')");
add(Ops.DateTimeOps.TRUNC_SECOND, "CONVERT(DATETIME, CONVERT(VARCHAR(19), {0}, 120))");
add(Ops.DateTimeOps.DATE, "cast({0} as date)");
add(Ops.DateTimeOps.CURRENT_DATE, "cast(getdate() as date)");
addTypeNameToCode("bit", Types.BOOLEAN, true);
addTypeNameToCode("decimal", Types.DOUBLE, true);
addTypeNameToCode("tinyint identity", Types.TINYINT);
addTypeNameToCode("bigint identity", Types.BIGINT);

View File

@ -103,7 +103,7 @@ public class TeradataTemplates extends SQLTemplates {
add(Ops.DateTimeOps.TRUNC_MONTH, "trunc({0}, 'month')");
add(Ops.DateTimeOps.TRUNC_WEEK, "trunc({0}, 'w')");
add(Ops.DateTimeOps.TRUNC_DAY, "trunc({0}, 'dd')");
add(Ops.DateTimeOps.TRUNC_HOUR, "trunc({0}, 'hh')");
add(Ops.DateTimeOps.TRUNC_HOUR, "trunc({0}, 'hh24')");
add(Ops.DateTimeOps.TRUNC_MINUTE, "trunc({0}, 'mi')");
add(Ops.DateTimeOps.TRUNC_SECOND, "{0}"); // not truncated
}

View File

@ -482,7 +482,7 @@ public class SelectBase extends AbstractBaseTest {
}
@Test
@ExcludeIn({CUBRID, DERBY, FIREBIRD, H2, HSQLDB, MYSQL, SQLITE, SQLSERVER, TERADATA}) // FIXME
@ExcludeIn({DERBY, FIREBIRD, SQLITE, SQLSERVER}) // FIXME
public void Date_Trunc() {
DateTimeExpression<java.util.Date> expr = DateTimeExpression.currentTimestamp();
@ -501,7 +501,7 @@ public class SelectBase extends AbstractBaseTest {
}
@Test
@IncludeIn({DB2, ORACLE, POSTGRES, TERADATA})
@ExcludeIn({FIREBIRD, SQLITE}) // FIXME
public void Date_Trunc2() {
DateTimeExpression<DateTime> expr = DateTimeExpression.currentTimestamp(DateTime.class);
@ -521,6 +521,13 @@ public class SelectBase extends AbstractBaseTest {
DateTime toMinute = tuple.get(SQLExpressions.datetrunc(DatePart.minute, expr));
DateTime toSecond = tuple.get(SQLExpressions.datetrunc(DatePart.second, expr));
assertEquals(date.getZone(), toYear.getZone());
assertEquals(date.getZone(), toMonth.getZone());
assertEquals(date.getZone(), toDay.getZone());
assertEquals(date.getZone(), toHour.getZone());
assertEquals(date.getZone(), toMinute.getZone());
assertEquals(date.getZone(), toSecond.getZone());
// year
assertEquals(date.getYear(), toYear.getYear());
assertEquals(date.getYear(), toMonth.getYear());