Javadoc for the current date/time/timestamp functions

Explain the difference between these various functions, and
how to correctly map them to SQL.
This commit is contained in:
Gavin King 2020-08-25 10:24:16 +02:00 committed by Andrea Boriero
parent 9d33bc39fb
commit fbba9ed4a8
1 changed files with 50 additions and 0 deletions

View File

@ -525,26 +525,76 @@ public abstract class Dialect implements ConversionContext {
queryEngine.getSqmFunctionRegistry().registerAlternateKey( "current_instant", "instant" ); //deprecated legacy! queryEngine.getSqmFunctionRegistry().registerAlternateKey( "current_instant", "instant" ); //deprecated legacy!
} }
/**
* Translation of the HQL/JPQL {@code current_date} function, which
* maps to the Java type {@code java.sql.Date}, and of the HQL
* {@code local_date} function which maps to the Java type
* {@code java.sql.LocalDate}.
*/
public String currentDate() { public String currentDate() {
return "current_date"; return "current_date";
} }
/**
* Translation of the HQL/JPQL {@code current_time} function, which
* maps to the Java type {@code java.sql.Time} which is a time with
* no time zone. This contradicts ANSI SQL where {@code current_time}
* has the type {@code TIME WITH TIME ZONE}.
* <p>
* It is recommended to override this in dialects for databases which
* support {@code localtime} or {@code time at local}.
*/
public String currentTime() { public String currentTime() {
return "current_time"; return "current_time";
} }
/**
* Translation of the HQL/JPQL {@code current_timestamp} function,
* which maps to the Java type {@code java.sql.Timestamp} which is
* a datetime with no time zone. This contradicts ANSI SQL where
* {@code current_timestamp} has the type
* {@code TIMESTAMP WITH TIME ZONE}.
* <p>
* It is recommended to override this in dialects for databases which
* support {@code localtimestamp} or {@code timestamp at local}.
*/
public String currentTimestamp() { public String currentTimestamp() {
return "current_timestamp"; return "current_timestamp";
} }
/**
* Translation of the HQL {@code local_time} function, which maps to
* the Java type {@code java.time.LocalTime} which is a time with no
* time zone. It should usually be the same SQL function as for
* {@link #currentTime()}.
* <p>
* It is recommended to override this in dialects for databases which
* support {@code localtime} or {@code current_time at local}.
*/
public String currentLocalTime() { public String currentLocalTime() {
return currentTime(); return currentTime();
} }
/**
* Translation of the HQL {@code local_datetime} function, which maps
* to the Java type {@code java.time.LocalDateTime} which is a datetime
* with no time zone. It should usually be the same SQL function as for
* {@link #currentTimestamp()}.
* <p>
* It is recommended to override this in dialects for databases which
* support {@code localtimestamp} or {@code current_timestamp at local}.
*/
public String currentLocalTimestamp() { public String currentLocalTimestamp() {
return currentTimestamp(); return currentTimestamp();
} }
/**
* Translation of the HQL {@code offset_datetime} function, which maps
* to the Java type {@code java.time.OffsetDateTime} which is a datetime
* with a time zone. This in principle correctly maps to the ANSI SQL
* {@code current_timestamp} which has the type
* {@code TIMESTAMP WITH TIME ZONE}.
*/
public String currentTimestampWithTimeZone() { public String currentTimestampWithTimeZone() {
return currentTimestamp(); return currentTimestamp();
} }