Class SqlAbstractDateTimeLiteral

  • All Implemented Interfaces:
    java.lang.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 Detail

      • hasTimeZone

        protected final boolean hasTimeZone
      • precision

        protected final int precision
    • Constructor Detail

      • SqlAbstractDateTimeLiteral

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

      • getPrec

        public int getPrec()
      • toString

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

        public abstract java.lang.String toFormattedString()
        Returns e.g. 1969-07-21.
      • 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