diff --git a/jOOQ-test/src/org/jooq/test/_/testcases/DataTypeTests.java b/jOOQ-test/src/org/jooq/test/_/testcases/DataTypeTests.java index 7090903f2b..dfb80066b6 100644 --- a/jOOQ-test/src/org/jooq/test/_/testcases/DataTypeTests.java +++ b/jOOQ-test/src/org/jooq/test/_/testcases/DataTypeTests.java @@ -52,8 +52,10 @@ import static org.jooq.SQLDialect.SQLSERVER; import static org.jooq.SQLDialect.SYBASE; import static org.jooq.impl.Factory.cast; import static org.jooq.impl.Factory.castNull; +import static org.jooq.impl.Factory.dateAdd; import static org.jooq.impl.Factory.dateDiff; import static org.jooq.impl.Factory.inline; +import static org.jooq.impl.Factory.timestampAdd; import static org.jooq.impl.Factory.timestampDiff; import static org.jooq.impl.Factory.val; import static org.jooq.tools.unsigned.Unsigned.ubyte; @@ -1305,22 +1307,32 @@ extends BaseTest + * This translates into any dialect + * + * @see Field#add(Number) + */ + @Support + public static Field dateAdd(Date date, Number interval) { + return dateAdd(val(date), val(interval)); + } + + /** + * Add an interval to a date + *

+ * This translates into any dialect + * + * @see Field#add(Field) + */ + @Support + public static Field dateAdd(Field date, Field interval) { + return nullSafe(date).add(interval); + } + /** * Get the date difference in number of days *

@@ -2534,6 +2558,30 @@ public class Factory implements FactoryOperations { return new DateDiff(nullSafe(date1), nullSafe(date2)); } + /** + * Add an interval to a timestamp + *

+ * This translates into any dialect + * + * @see Field#add(Number) + */ + @Support + public static Field timestampAdd(Timestamp timestamp, Number interval) { + return timestampAdd(val(timestamp), val(interval)); + } + + /** + * Add an interval to a timestamp + *

+ * This translates into any dialect + * + * @see Field#add(Field) + */ + @Support + public static Field timestampAdd(Field timestamp, Field interval) { + return nullSafe(timestamp).add(interval); + } + /** * Get the timestamp difference as a INTERVAL DAY TO SECOND * type @@ -2583,7 +2631,7 @@ public class Factory implements FactoryOperations { */ @Support public static Field timestampDiff(Field timestamp1, Field timestamp2) { - return new TimestampDiff(timestamp1, timestamp2); + return new TimestampDiff(nullSafe(timestamp1), nullSafe(timestamp2)); } /** diff --git a/jOOQ/src/test/java/org/jooq/test/jOOQTest.java b/jOOQ/src/test/java/org/jooq/test/jOOQTest.java index 557ab13659..3ade570fa0 100644 --- a/jOOQ/src/test/java/org/jooq/test/jOOQTest.java +++ b/jOOQ/src/test/java/org/jooq/test/jOOQTest.java @@ -70,6 +70,7 @@ import java.sql.Connection; import java.sql.Date; import java.sql.PreparedStatement; import java.sql.SQLException; +import java.sql.Timestamp; import java.util.ArrayList; import java.util.Arrays; import java.util.regex.Matcher; @@ -363,6 +364,15 @@ public class jOOQTest { assertEquals( Factory.coth((Integer) null), Factory.coth((Field) null)); + assertEquals( + Factory.dateAdd((Date) null, (Integer) null), + Factory.dateAdd((Field) null, (Field) null)); + assertEquals( + Factory.dateDiff((Date) null, (Date) null), + Factory.dateDiff((Field) null, (Field) null)); + assertEquals( + Factory.day((java.util.Date) null), + Factory.day((Field) null)); assertEquals( Factory.decode((Integer) null, null, null), Factory.decode((Field) null, null, null)); @@ -378,24 +388,6 @@ public class jOOQTest { assertEquals( Factory.extract((java.util.Date) null, DatePart.DAY), Factory.extract((Field) null, DatePart.DAY)); - assertEquals( - Factory.year((java.util.Date) null), - Factory.year((Field) null)); - assertEquals( - Factory.month((java.util.Date) null), - Factory.month((Field) null)); - assertEquals( - Factory.day((java.util.Date) null), - Factory.day((Field) null)); - assertEquals( - Factory.hour((java.util.Date) null), - Factory.hour((Field) null)); - assertEquals( - Factory.minute((java.util.Date) null), - Factory.minute((Field) null)); - assertEquals( - Factory.second((java.util.Date) null), - Factory.second((Field) null)); assertEquals( Factory.floor((Integer) null), Factory.floor((Field) null)); @@ -411,6 +403,9 @@ public class jOOQTest { assertEquals( Factory.greatest((Integer) null, (Integer) null), Factory.greatest((Field) null, (Field) null)); + assertEquals( + Factory.hour((java.util.Date) null), + Factory.hour((Field) null)); assertEquals( Factory.lag((Field) null, 1, (Integer) null), Factory.lag((Field) null, 1, (Field) null)); @@ -444,6 +439,12 @@ public class jOOQTest { assertEquals( Factory.ltrim((String) null), Factory.ltrim((Field) null)); + assertEquals( + Factory.minute((java.util.Date) null), + Factory.minute((Field) null)); + assertEquals( + Factory.month((java.util.Date) null), + Factory.month((Field) null)); assertEquals( Factory.nullif((Integer) null, (Integer) null), Factory.nullif((Field) null, (Integer) null)); @@ -513,6 +514,9 @@ public class jOOQTest { assertEquals( Factory.rtrim((String) null), Factory.rtrim((Field) null)); + assertEquals( + Factory.second((java.util.Date) null), + Factory.second((Field) null)); assertEquals( Factory.shl((Integer) null, (Integer) null), Factory.shl((Integer) null, (Field) null)); @@ -549,12 +553,21 @@ public class jOOQTest { assertEquals( Factory.tanh((Integer) null), Factory.tanh((Field) null)); + assertEquals( + Factory.timestampAdd((Timestamp) null, (Integer) null), + Factory.timestampAdd((Field) null, (Field) null)); + assertEquals( + Factory.timestampDiff((Timestamp) null, (Timestamp) null), + Factory.timestampDiff((Field) null, (Field) null)); assertEquals( Factory.trim((String) null), Factory.trim((Field) null)); assertEquals( Factory.upper((String) null), Factory.upper((Field) null)); + assertEquals( + Factory.year((java.util.Date) null), + Factory.year((Field) null)); } @Test