Class SqlAbstractDateTimeLiteral

java.lang.Object
org.apache.calcite.sql.SqlNode
org.apache.calcite.sql.SqlLiteral
org.apache.calcite.sql.SqlAbstractDateTimeLiteral
All Implemented Interfaces:
Cloneable
Direct Known Subclasses:
SqlDateLiteral, SqlTimeLiteral, SqlTimestampLiteral

public abstract class SqlAbstractDateTimeLiteral extends SqlLiteral
A SQL literal representing a DATE, TIME or TIMESTAMP value.

Examples:

  • DATE '2004-10-22'
  • TIME '14:33:44.567'
  • TIMESTAMP '1969-07-21 03:15 GMT'
  • Field Details

    • hasTimeZone

      protected final boolean hasTimeZone
    • precision

      protected final int precision
  • Constructor Details

    • SqlAbstractDateTimeLiteral

      protected SqlAbstractDateTimeLiteral(Object d, boolean tz, SqlTypeName typeName, int precision, SqlParserPos pos)
      Constructs a datetime literal.
  • Method Details

    • getTimestamp

      protected TimestampString getTimestamp()
      Converts this literal to a TimestampString.
    • getPrec

      public int getPrec()
    • toString

      public abstract String toString()
      Returns e.g. DATE '1969-07-21'.
      Overrides:
      toString in class SqlNode
    • toFormattedString

      public abstract String toFormattedString()
      Returns e.g. 1969-07-21.
    • createSqlType

      public RelDataType createSqlType(RelDataTypeFactory typeFactory)
      Overrides:
      createSqlType in class SqlLiteral
    • unparse

      public void unparse(SqlWriter writer, int leftPrec, int rightPrec)
      Description copied from class: SqlNode
      Writes a SQL representation of this node to a writer.

      The leftPrec and rightPrec parameters give us enough context to decide whether we need to enclose the expression in parentheses. For example, we need parentheses around "2 + 3" if preceded by "5 *". This is because the precedence of the "*" operator is greater than the precedence of the "+" operator.

      The algorithm handles left- and right-associative operators by giving them slightly different left- and right-precedence.

      If SqlWriter.isAlwaysUseParentheses() is true, we use parentheses even when they are not required by the precedence rules.

      For the details of this algorithm, see SqlCall.unparse(org.apache.calcite.sql.SqlWriter, int, int).

      Overrides:
      unparse in class SqlLiteral
      Parameters:
      writer - Target writer
      leftPrec - The precedence of the SqlNode immediately preceding this node in a depth-first scan of the parse tree
      rightPrec - The precedence of the SqlNode immediately