This is an automated email from the ASF dual-hosted git repository.

dongjoon-hyun pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/spark.git


The following commit(s) were added to refs/heads/master by this push:
     new f41a98676f08 [SPARK-57339][SQL] Format nanosecond-precision timestamp 
literals in Literal.toString and Literal.sql
f41a98676f08 is described below

commit f41a98676f08dc8dbe267771f7206b276d62f94d
Author: Vinod KC <[email protected]>
AuthorDate: Sun Jun 14 21:07:11 2026 -0700

    [SPARK-57339][SQL] Format nanosecond-precision timestamp literals in 
Literal.toString and Literal.sql
    
    ### What changes were proposed in this pull request?
    
    As part of the nanosecond timestamp preview (SPARK-56822), 
`TIMESTAMP_NTZ(p)` and `TIMESTAMP_LTZ(p)` (with p in [7, 9]) are represented 
internally by `TimestampNanosVal`. However, `Literal.toString` and 
`Literal.sql` had no dedicated cases for these types and fell through to 
generic defaults.
    
    This PR adds explicit cases for both nanosecond timestamp types in 
`Literal.toString` and `Literal.sql`, consistent with how the microsecond types 
(`TimestampType`, `TimestampNTZType`) are handled. It also fixes the jsonFields 
match site in Literal that had the same missing nanos case. The doGenCode path 
intentionally relies on the existing default addReferenceObj object path — no 
nanos-specific codegen case is needed.
    
    This PR [56455](https://github.com/apache/spark/pull/56455) was reverted 
due to a recent Golden file conflict on the main branch. So, raising a new PR 
with the latest master branch changes
    
    ### Why are the changes needed?
    
    The raw `TimestampNanosVal` representation was leaking into user-facing 
output such as analyzed plans, schemas, and generated SQL. For example, the 
analyzer result of:
    ```
    SELECT hour(TIMESTAMP_LTZ '2020-01-01 13:24:35.123456789')
    ```
    produced:
    ```
    Project [hour(cast(TimestampNanosVal(1577913875123456, 789) as timestamp), 
...) AS hour(TimestampNanosVal(1577913875123456, 789))#x]
    ```
    
    ### Does this PR introduce _any_ user-facing change?
    
    Yes, within the unreleased nanosecond timestamp preview on master.
    
    Before:
    ```
    SELECT hour(TIMESTAMP_LTZ '2020-01-01 13:24:35.123456789')
    -- schema: struct<hour(TimestampNanosVal(1577913875123456, 789)):int>
    ```
    
    After:
    ```
    SELECT hour(TIMESTAMP_LTZ '2020-01-01 13:24:35.123456789')
    -- schema: struct<hour(TIMESTAMP_LTZ '2020-01-01 13:24:35.123456789'):int>
    ```
    
    `Literal.toString` now renders a formatted timestamp string with up to 9 
fractional digits, and `Literal.sql` emits typed literals such as 
`TIMESTAMP_NTZ '2018-02-14 12:58:59.123456789'` / `TIMESTAMP_LTZ '2020-01-01 
13:24:35.123456789'`.
    
    ### How was this patch tested?
    
    A new unit test was added to LiteralExpressionSuite, covering:
    
    - toString and .sql output correctness for TIMESTAMP_NTZ(p) and 
TIMESTAMP_LTZ(p) at each precision p in [7, 9]
    - Round-trip correctness: Literal.fromSQL(lit.sql) must evaluate back to 
the original stored value
    - Trailing-zero edge case: timestamps where sub-microsecond digits are zero 
(e.g. nanosWithinMicro = 0) must still emit exactly precision fractional digits 
in SQL output and round-trip correctly
    
    ### Was this patch authored or co-authored using generative AI tooling?
    
    Generated-by: Claude Sonnet 4.6
    
    Closes #56494 from vinodkc/br_SPARK-57339.
    
    Authored-by: Vinod KC <[email protected]>
    Signed-off-by: Dongjoon Hyun <[email protected]>
---
 .../spark/sql/catalyst/expressions/literals.scala  | 27 +++++++
 .../expressions/LiteralExpressionSuite.scala       | 83 ++++++++++++++++++++++
 .../analyzer-results/timestamp-ltz-nanos.sql.out   | 42 +++++------
 .../analyzer-results/timestamp-ntz-nanos.sql.out   | 26 +++----
 .../sql-tests/results/timestamp-ltz-nanos.sql.out  | 42 +++++------
 .../sql-tests/results/timestamp-ntz-nanos.sql.out  | 26 +++----
 6 files changed, 178 insertions(+), 68 deletions(-)

diff --git 
a/sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/expressions/literals.scala
 
b/sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/expressions/literals.scala
index bb2001c5f12f..e444929b216a 100644
--- 
a/sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/expressions/literals.scala
+++ 
b/sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/expressions/literals.scala
@@ -475,6 +475,12 @@ case class Literal (value: Any, dataType: DataType) 
extends LeafExpression {
           
TimestampFormatter.getFractionFormatter(timeZoneId).format(value.asInstanceOf[Long])
         case TimestampNTZType =>
           
TimestampFormatter.getFractionFormatter(ZoneOffset.UTC).format(value.asInstanceOf[Long])
+        case t: TimestampNTZNanosType =>
+          TimestampFormatter.getFractionFormatter(ZoneOffset.UTC)
+            .formatWithoutTimeZoneNanos(value.asInstanceOf[TimestampNanosVal], 
t.precision)
+        case t: TimestampLTZNanosType =>
+          TimestampFormatter.getFractionFormatter(timeZoneId)
+            .formatNanos(value.asInstanceOf[TimestampNanosVal], t.precision)
         case DayTimeIntervalType(startField, endField) =>
           toDayTimeIntervalString(value.asInstanceOf[Long], ANSI_STYLE, 
startField, endField)
         case YearMonthIntervalType(startField, endField) =>
@@ -518,6 +524,8 @@ case class Literal (value: Any, dataType: DataType) extends 
LeafExpression {
       case (null, _) => JNull
       case (i: Int, DateType) => JString(toString)
       case (l: Long, TimestampType | _: TimeType) => JString(toString)
+      case (_: TimestampNanosVal, _: TimestampNTZNanosType | _: 
TimestampLTZNanosType) =>
+        JString(toString)
       case (other, _) => JString(other.toString)
     }
     ("value" -> jsonValue) :: ("dataType" -> dataType.jsonValue) :: Nil
@@ -569,6 +577,19 @@ case class Literal (value: Any, dataType: DataType) 
extends LeafExpression {
     }
   }
 
+  private def padToNanosPrecision(ts: String, precision: Int): String = {
+    val dotIdx = ts.indexOf('.')
+    if (dotIdx < 0) {
+      ts + "." + "0" * precision
+    } else {
+      val fracLen = ts.length - dotIdx - 1
+      // fracLen can never exceed precision: 
formatNanos/formatWithoutTimeZoneNanos truncate
+      // the value to `precision` digits before formatting, and the 
fractionFormatter only
+      // strips trailing zeros (never adds digits); the else branch handles 
fracLen == precision.
+      if (fracLen < precision) ts + "0" * (precision - fracLen) else ts
+    }
+  }
+
   override def sql: String = (value, dataType) match {
     case (_, NullType | _: ArrayType | _: MapType | _: StructType) if value == 
null => "NULL"
     case _ if value == null => s"CAST(NULL AS ${dataType.sql})"
@@ -607,6 +628,12 @@ case class Literal (value: Any, dataType: DataType) 
extends LeafExpression {
       s"TIMESTAMP '$toString'"
     case (v: Long, TimestampNTZType) =>
       s"TIMESTAMP_NTZ '$toString'"
+    // toString strips trailing zeros (display-only); pad back to exactly 
`precision` digits
+    // here so the SQL literal round-trips correctly through the parser.
+    case (_: TimestampNanosVal, t: TimestampNTZNanosType) =>
+      s"TIMESTAMP_NTZ '${padToNanosPrecision(toString, t.precision)}'"
+    case (_: TimestampNanosVal, t: TimestampLTZNanosType) =>
+      s"TIMESTAMP_LTZ '${padToNanosPrecision(toString, t.precision)}'"
     case (i: CalendarInterval, CalendarIntervalType) =>
       s"INTERVAL '${i.toString}'"
     case (v: Array[Byte], BinaryType) => 
s"X'${HexFormat.of().withUpperCase().formatHex(v)}'"
diff --git 
a/sql/catalyst/src/test/scala/org/apache/spark/sql/catalyst/expressions/LiteralExpressionSuite.scala
 
b/sql/catalyst/src/test/scala/org/apache/spark/sql/catalyst/expressions/LiteralExpressionSuite.scala
index 7c6939eb3ad5..b69b29f78914 100644
--- 
a/sql/catalyst/src/test/scala/org/apache/spark/sql/catalyst/expressions/LiteralExpressionSuite.scala
+++ 
b/sql/catalyst/src/test/scala/org/apache/spark/sql/catalyst/expressions/LiteralExpressionSuite.scala
@@ -171,6 +171,89 @@ class LiteralExpressionSuite extends SparkFunSuite with 
ExpressionEvalHelper {
     }
   }
 
+  test("SPARK-57339: format nanosecond-precision timestamp literals in 
toString and sql") {
+    // UTC session timezone keeps LTZ and NTZ formatted strings identical for 
the same wall-clock.
+    withSQLConf(SQLConf.SESSION_LOCAL_TIMEZONE.key -> "UTC") {
+      val ldt = LocalDateTime.of(2020, 1, 1, 13, 24, 35, 123456789)
+      val instant = ldt.toInstant(ZoneOffset.UTC)
+
+      TimestampNanosTestUtils.foreachNanosPrecision { precision =>
+        val ltzType = TimestampLTZNanosType(precision)
+        val ntzType = TimestampNTZNanosType(precision)
+        val ltzVal = DateTimeUtils.instantToTimestampNanos(instant, precision)
+        val ntzVal = DateTimeUtils.localDateTimeToTimestampNanos(ldt, 
precision)
+        val ltzLit = Literal(ltzVal, ltzType)
+        val ntzLit = Literal(ntzVal, ntzType)
+
+        // ".123456789" truncated to `precision` fractional digits (trailing 
zeros stripped by
+        // the FractionTimestampFormatter, but "123456789" has none for p in 
[7,9]).
+        val frac = ".123456789".substring(0, 1 + precision)
+        val expected = s"2020-01-01 13:24:35$frac"
+
+        assert(ltzLit.toString === expected, s"LTZ toString at precision 
$precision")
+        assert(ntzLit.toString === expected, s"NTZ toString at precision 
$precision")
+        assert(ltzLit.sql === s"TIMESTAMP_LTZ '$expected'",
+          s"LTZ sql at precision $precision")
+        assert(ntzLit.sql === s"TIMESTAMP_NTZ '$expected'",
+          s"NTZ sql at precision $precision")
+
+        // Round-trip: parsing the sql output must reproduce the same literal 
value.
+        checkEvaluation(Literal.fromSQL(ltzLit.sql), ltzVal)
+        checkEvaluation(Literal.fromSQL(ntzLit.sql), ntzVal)
+
+        // Trailing-zero edge: nanosWithinMicro=0 means the formatter strips 
sub-micro digits.
+        // sql must still emit exactly `precision` fractional digits so the 
round-trip is correct.
+        val zeroNanosLdt = LocalDateTime.of(2020, 1, 1, 13, 24, 35, 123456000)
+        val zeroNanosInstant = zeroNanosLdt.toInstant(ZoneOffset.UTC)
+        val zeroNtzVal = 
DateTimeUtils.localDateTimeToTimestampNanos(zeroNanosLdt, precision)
+        val zeroLtzVal = 
DateTimeUtils.instantToTimestampNanos(zeroNanosInstant, precision)
+        val zeroNtzLit = Literal(zeroNtzVal, ntzType)
+        val zeroLtzLit = Literal(zeroLtzVal, ltzType)
+
+        assert(zeroNtzLit.sql.startsWith("TIMESTAMP_NTZ '"),
+          s"NTZ zero-nanos sql prefix at precision $precision")
+        assert(zeroLtzLit.sql.startsWith("TIMESTAMP_LTZ '"),
+          s"LTZ zero-nanos sql prefix at precision $precision")
+
+        val ntzFrac = zeroNtzLit.sql.dropWhile(_ != '.').takeWhile(_ != '\'')
+        val ltzFrac = zeroLtzLit.sql.dropWhile(_ != '.').takeWhile(_ != '\'')
+        assert(ntzFrac.length == precision + 1,
+          s"NTZ zero-nanos sql must have exactly $precision fractional digits, 
got: $ntzFrac")
+        assert(ltzFrac.length == precision + 1,
+          s"LTZ zero-nanos sql must have exactly $precision fractional digits, 
got: $ltzFrac")
+
+        // toString strips trailing zeros (display-only, no padding) - same 
for all precisions.
+        assert(zeroNtzLit.toString === "2020-01-01 13:24:35.123456",
+          s"NTZ zero-nanos toString at precision $precision (display strips 
trailing zeros)")
+        assert(zeroLtzLit.toString === "2020-01-01 13:24:35.123456",
+          s"LTZ zero-nanos toString at precision $precision (display strips 
trailing zeros)")
+
+        checkEvaluation(Literal.fromSQL(zeroNtzLit.sql), zeroNtzVal)
+        checkEvaluation(Literal.fromSQL(zeroLtzLit.sql), zeroLtzVal)
+
+        // Whole-second edge: no fractional part at all. padToNanosPrecision 
must insert
+        // "." + zeros so the SQL literal carries exactly `precision` 
fractional digits.
+        val wholeLdt = LocalDateTime.of(2020, 1, 1, 13, 24, 35, 0)
+        val wholeInstant = wholeLdt.toInstant(ZoneOffset.UTC)
+        val wholeNtzVal = 
DateTimeUtils.localDateTimeToTimestampNanos(wholeLdt, precision)
+        val wholeLtzVal = DateTimeUtils.instantToTimestampNanos(wholeInstant, 
precision)
+        val wholeNtzLit = Literal(wholeNtzVal, ntzType)
+        val wholeLtzLit = Literal(wholeLtzVal, ltzType)
+
+        assert(wholeNtzLit.toString === "2020-01-01 13:24:35",
+          s"NTZ whole-second toString at precision $precision")
+        assert(wholeLtzLit.toString === "2020-01-01 13:24:35",
+          s"LTZ whole-second toString at precision $precision")
+        assert(wholeNtzLit.sql === s"TIMESTAMP_NTZ '2020-01-01 13:24:35.${"0" 
* precision}'",
+          s"NTZ whole-second sql at precision $precision")
+        assert(wholeLtzLit.sql === s"TIMESTAMP_LTZ '2020-01-01 13:24:35.${"0" 
* precision}'",
+          s"LTZ whole-second sql at precision $precision")
+        checkEvaluation(Literal.fromSQL(wholeNtzLit.sql), wholeNtzVal)
+        checkEvaluation(Literal.fromSQL(wholeLtzLit.sql), wholeLtzVal)
+      }
+    }
+  }
+
   test("boolean literals") {
     checkEvaluation(Literal(true), true)
     checkEvaluation(Literal(false), false)
diff --git 
a/sql/core/src/test/resources/sql-tests/analyzer-results/timestamp-ltz-nanos.sql.out
 
b/sql/core/src/test/resources/sql-tests/analyzer-results/timestamp-ltz-nanos.sql.out
index bbc249f3deb2..087efaf0c32f 100644
--- 
a/sql/core/src/test/resources/sql-tests/analyzer-results/timestamp-ltz-nanos.sql.out
+++ 
b/sql/core/src/test/resources/sql-tests/analyzer-results/timestamp-ltz-nanos.sql.out
@@ -121,21 +121,21 @@ Project [named_struct(f, cast(null as timestamp_ltz(9))) 
AS named_struct(f, CAST
 -- !query
 SELECT hour(TIMESTAMP_LTZ '2020-01-01 13:24:35.123456789')
 -- !query analysis
-Project [hour(cast(TimestampNanosVal(1577913875123456, 789) as timestamp), 
Some(America/Los_Angeles)) AS hour(TimestampNanosVal(1577913875123456, 789))#x]
+Project [hour(cast(2020-01-01 13:24:35.123456789 as timestamp), 
Some(America/Los_Angeles)) AS hour(TIMESTAMP_LTZ '2020-01-01 
13:24:35.123456789')#x]
 +- OneRowRelation
 
 
 -- !query
 SELECT minute(TIMESTAMP_LTZ '2020-01-01 13:24:35.123456789')
 -- !query analysis
-Project [minute(cast(TimestampNanosVal(1577913875123456, 789) as timestamp), 
Some(America/Los_Angeles)) AS minute(TimestampNanosVal(1577913875123456, 
789))#x]
+Project [minute(cast(2020-01-01 13:24:35.123456789 as timestamp), 
Some(America/Los_Angeles)) AS minute(TIMESTAMP_LTZ '2020-01-01 
13:24:35.123456789')#x]
 +- OneRowRelation
 
 
 -- !query
 SELECT second(TIMESTAMP_LTZ '2020-01-01 13:24:35.123456789')
 -- !query analysis
-Project [second(cast(TimestampNanosVal(1577913875123456, 789) as timestamp), 
Some(America/Los_Angeles)) AS second(TimestampNanosVal(1577913875123456, 
789))#x]
+Project [second(cast(2020-01-01 13:24:35.123456789 as timestamp), 
Some(America/Los_Angeles)) AS second(TIMESTAMP_LTZ '2020-01-01 
13:24:35.123456789')#x]
 +- OneRowRelation
 
 
@@ -163,105 +163,105 @@ Project [hour(cast(cast(null as timestamp_ltz(9)) as 
timestamp), Some(America/Lo
 -- !query
 SELECT hour(TIMESTAMP_LTZ '1960-01-01 13:24:35.123456789')
 -- !query analysis
-Project [hour(cast(TimestampNanosVal(-315542124876544, 789) as timestamp), 
Some(America/Los_Angeles)) AS hour(TimestampNanosVal(-315542124876544, 789))#x]
+Project [hour(cast(1960-01-01 13:24:35.123456789 as timestamp), 
Some(America/Los_Angeles)) AS hour(TIMESTAMP_LTZ '1960-01-01 
13:24:35.123456789')#x]
 +- OneRowRelation
 
 
 -- !query
 SELECT minute(TIMESTAMP_LTZ '1960-01-01 13:24:35.123456789')
 -- !query analysis
-Project [minute(cast(TimestampNanosVal(-315542124876544, 789) as timestamp), 
Some(America/Los_Angeles)) AS minute(TimestampNanosVal(-315542124876544, 
789))#x]
+Project [minute(cast(1960-01-01 13:24:35.123456789 as timestamp), 
Some(America/Los_Angeles)) AS minute(TIMESTAMP_LTZ '1960-01-01 
13:24:35.123456789')#x]
 +- OneRowRelation
 
 
 -- !query
 SELECT second(TIMESTAMP_LTZ '1960-01-01 13:24:35.123456789')
 -- !query analysis
-Project [second(cast(TimestampNanosVal(-315542124876544, 789) as timestamp), 
Some(America/Los_Angeles)) AS second(TimestampNanosVal(-315542124876544, 
789))#x]
+Project [second(cast(1960-01-01 13:24:35.123456789 as timestamp), 
Some(America/Los_Angeles)) AS second(TIMESTAMP_LTZ '1960-01-01 
13:24:35.123456789')#x]
 +- OneRowRelation
 
 
 -- !query
 SELECT hour(TIMESTAMP_LTZ '2020-01-01 13:24:35.123456789 Asia/Kolkata')
 -- !query analysis
-Project [hour(cast(TimestampNanosVal(1577865275123456, 789) as timestamp), 
Some(America/Los_Angeles)) AS hour(TimestampNanosVal(1577865275123456, 789))#x]
+Project [hour(cast(2019-12-31 23:54:35.123456789 as timestamp), 
Some(America/Los_Angeles)) AS hour(TIMESTAMP_LTZ '2019-12-31 
23:54:35.123456789')#x]
 +- OneRowRelation
 
 
 -- !query
 SELECT minute(TIMESTAMP_LTZ '2020-01-01 13:24:35.123456789 Asia/Kolkata')
 -- !query analysis
-Project [minute(cast(TimestampNanosVal(1577865275123456, 789) as timestamp), 
Some(America/Los_Angeles)) AS minute(TimestampNanosVal(1577865275123456, 
789))#x]
+Project [minute(cast(2019-12-31 23:54:35.123456789 as timestamp), 
Some(America/Los_Angeles)) AS minute(TIMESTAMP_LTZ '2019-12-31 
23:54:35.123456789')#x]
 +- OneRowRelation
 
 
 -- !query
 SELECT second(TIMESTAMP_LTZ '2020-01-01 13:24:35.123456789 Asia/Kolkata')
 -- !query analysis
-Project [second(cast(TimestampNanosVal(1577865275123456, 789) as timestamp), 
Some(America/Los_Angeles)) AS second(TimestampNanosVal(1577865275123456, 
789))#x]
+Project [second(cast(2019-12-31 23:54:35.123456789 as timestamp), 
Some(America/Los_Angeles)) AS second(TIMESTAMP_LTZ '2019-12-31 
23:54:35.123456789')#x]
 +- OneRowRelation
 
 
 -- !query
 SELECT hour(TIMESTAMP_LTZ '2020-01-01 13:24:35.123456789 UTC')
 -- !query analysis
-Project [hour(cast(TimestampNanosVal(1577885075123456, 789) as timestamp), 
Some(America/Los_Angeles)) AS hour(TimestampNanosVal(1577885075123456, 789))#x]
+Project [hour(cast(2020-01-01 05:24:35.123456789 as timestamp), 
Some(America/Los_Angeles)) AS hour(TIMESTAMP_LTZ '2020-01-01 
05:24:35.123456789')#x]
 +- OneRowRelation
 
 
 -- !query
 SELECT minute(TIMESTAMP_LTZ '2020-01-01 13:24:35.123456789 UTC')
 -- !query analysis
-Project [minute(cast(TimestampNanosVal(1577885075123456, 789) as timestamp), 
Some(America/Los_Angeles)) AS minute(TimestampNanosVal(1577885075123456, 
789))#x]
+Project [minute(cast(2020-01-01 05:24:35.123456789 as timestamp), 
Some(America/Los_Angeles)) AS minute(TIMESTAMP_LTZ '2020-01-01 
05:24:35.123456789')#x]
 +- OneRowRelation
 
 
 -- !query
 SELECT second(TIMESTAMP_LTZ '2020-01-01 13:24:35.123456789 UTC')
 -- !query analysis
-Project [second(cast(TimestampNanosVal(1577885075123456, 789) as timestamp), 
Some(America/Los_Angeles)) AS second(TimestampNanosVal(1577885075123456, 
789))#x]
+Project [second(cast(2020-01-01 05:24:35.123456789 as timestamp), 
Some(America/Los_Angeles)) AS second(TIMESTAMP_LTZ '2020-01-01 
05:24:35.123456789')#x]
 +- OneRowRelation
 
 
 -- !query
 SELECT extract(HOUR FROM TIMESTAMP_LTZ '2020-01-01 13:24:35.123456789')
 -- !query analysis
-Project [extract(HOUR, TimestampNanosVal(1577913875123456, 789)) AS 
extract(HOUR FROM TimestampNanosVal(1577913875123456, 789))#x]
+Project [extract(HOUR, 2020-01-01 13:24:35.123456789) AS extract(HOUR FROM 
TIMESTAMP_LTZ '2020-01-01 13:24:35.123456789')#x]
 +- OneRowRelation
 
 
 -- !query
 SELECT extract(MINUTE FROM TIMESTAMP_LTZ '2020-01-01 13:24:35.123456789')
 -- !query analysis
-Project [extract(MINUTE, TimestampNanosVal(1577913875123456, 789)) AS 
extract(MINUTE FROM TimestampNanosVal(1577913875123456, 789))#x]
+Project [extract(MINUTE, 2020-01-01 13:24:35.123456789) AS extract(MINUTE FROM 
TIMESTAMP_LTZ '2020-01-01 13:24:35.123456789')#x]
 +- OneRowRelation
 
 
 -- !query
 SELECT extract(SECOND FROM TIMESTAMP_LTZ '2020-01-01 13:24:35.123456789')
 -- !query analysis
-Project [extract(SECOND, TimestampNanosVal(1577913875123456, 789)) AS 
extract(SECOND FROM TimestampNanosVal(1577913875123456, 789))#x]
+Project [extract(SECOND, 2020-01-01 13:24:35.123456789) AS extract(SECOND FROM 
TIMESTAMP_LTZ '2020-01-01 13:24:35.123456789')#x]
 +- OneRowRelation
 
 
 -- !query
 SELECT date_part('HOUR', TIMESTAMP_LTZ '2020-01-01 13:24:35.123456789')
 -- !query analysis
-Project [date_part(HOUR, TimestampNanosVal(1577913875123456, 789)) AS 
date_part(HOUR, TimestampNanosVal(1577913875123456, 789))#x]
+Project [date_part(HOUR, 2020-01-01 13:24:35.123456789) AS date_part(HOUR, 
TIMESTAMP_LTZ '2020-01-01 13:24:35.123456789')#x]
 +- OneRowRelation
 
 
 -- !query
 SELECT date_part('MINUTE', TIMESTAMP_LTZ '2020-01-01 13:24:35.123456789')
 -- !query analysis
-Project [date_part(MINUTE, TimestampNanosVal(1577913875123456, 789)) AS 
date_part(MINUTE, TimestampNanosVal(1577913875123456, 789))#x]
+Project [date_part(MINUTE, 2020-01-01 13:24:35.123456789) AS date_part(MINUTE, 
TIMESTAMP_LTZ '2020-01-01 13:24:35.123456789')#x]
 +- OneRowRelation
 
 
 -- !query
 SELECT date_part('SECOND', TIMESTAMP_LTZ '2020-01-01 13:24:35.123456789')
 -- !query analysis
-Project [date_part(SECOND, TimestampNanosVal(1577913875123456, 789)) AS 
date_part(SECOND, TimestampNanosVal(1577913875123456, 789))#x]
+Project [date_part(SECOND, 2020-01-01 13:24:35.123456789) AS date_part(SECOND, 
TIMESTAMP_LTZ '2020-01-01 13:24:35.123456789')#x]
 +- OneRowRelation
 
 
@@ -289,19 +289,19 @@ Project [extract(SECOND, cast(null as timestamp_ltz(9))) 
AS extract(SECOND FROM
 -- !query
 SELECT extract(SECOND FROM TIMESTAMP_LTZ '1960-01-01 13:24:35.123456789')
 -- !query analysis
-Project [extract(SECOND, TimestampNanosVal(-315542124876544, 789)) AS 
extract(SECOND FROM TimestampNanosVal(-315542124876544, 789))#x]
+Project [extract(SECOND, 1960-01-01 13:24:35.123456789) AS extract(SECOND FROM 
TIMESTAMP_LTZ '1960-01-01 13:24:35.123456789')#x]
 +- OneRowRelation
 
 
 -- !query
 SELECT extract(MINUTE FROM TIMESTAMP_LTZ '2020-01-01 13:24:35.123456789 
Asia/Kolkata')
 -- !query analysis
-Project [extract(MINUTE, TimestampNanosVal(1577865275123456, 789)) AS 
extract(MINUTE FROM TimestampNanosVal(1577865275123456, 789))#x]
+Project [extract(MINUTE, 2019-12-31 23:54:35.123456789) AS extract(MINUTE FROM 
TIMESTAMP_LTZ '2019-12-31 23:54:35.123456789')#x]
 +- OneRowRelation
 
 
 -- !query
 SELECT extract(SECOND FROM TIMESTAMP_LTZ '2020-01-01 13:24:35.123456789 
Asia/Kolkata')
 -- !query analysis
-Project [extract(SECOND, TimestampNanosVal(1577865275123456, 789)) AS 
extract(SECOND FROM TimestampNanosVal(1577865275123456, 789))#x]
+Project [extract(SECOND, 2019-12-31 23:54:35.123456789) AS extract(SECOND FROM 
TIMESTAMP_LTZ '2019-12-31 23:54:35.123456789')#x]
 +- OneRowRelation
diff --git 
a/sql/core/src/test/resources/sql-tests/analyzer-results/timestamp-ntz-nanos.sql.out
 
b/sql/core/src/test/resources/sql-tests/analyzer-results/timestamp-ntz-nanos.sql.out
index 85192002d55e..567f131badf0 100644
--- 
a/sql/core/src/test/resources/sql-tests/analyzer-results/timestamp-ntz-nanos.sql.out
+++ 
b/sql/core/src/test/resources/sql-tests/analyzer-results/timestamp-ntz-nanos.sql.out
@@ -121,21 +121,21 @@ Project [named_struct(f, cast(null as timestamp_ntz(9))) 
AS named_struct(f, CAST
 -- !query
 SELECT hour(TIMESTAMP_NTZ '2020-01-01 13:24:35.123456789')
 -- !query analysis
-Project [hour(cast(TimestampNanosVal(1577885075123456, 789) as timestamp_ntz), 
Some(America/Los_Angeles)) AS hour(TimestampNanosVal(1577885075123456, 789))#x]
+Project [hour(cast(2020-01-01 13:24:35.123456789 as timestamp_ntz), 
Some(America/Los_Angeles)) AS hour(TIMESTAMP_NTZ '2020-01-01 
13:24:35.123456789')#x]
 +- OneRowRelation
 
 
 -- !query
 SELECT minute(TIMESTAMP_NTZ '2020-01-01 13:24:35.123456789')
 -- !query analysis
-Project [minute(cast(TimestampNanosVal(1577885075123456, 789) as 
timestamp_ntz), Some(America/Los_Angeles)) AS 
minute(TimestampNanosVal(1577885075123456, 789))#x]
+Project [minute(cast(2020-01-01 13:24:35.123456789 as timestamp_ntz), 
Some(America/Los_Angeles)) AS minute(TIMESTAMP_NTZ '2020-01-01 
13:24:35.123456789')#x]
 +- OneRowRelation
 
 
 -- !query
 SELECT second(TIMESTAMP_NTZ '2020-01-01 13:24:35.123456789')
 -- !query analysis
-Project [second(cast(TimestampNanosVal(1577885075123456, 789) as 
timestamp_ntz), Some(America/Los_Angeles)) AS 
second(TimestampNanosVal(1577885075123456, 789))#x]
+Project [second(cast(2020-01-01 13:24:35.123456789 as timestamp_ntz), 
Some(America/Los_Angeles)) AS second(TIMESTAMP_NTZ '2020-01-01 
13:24:35.123456789')#x]
 +- OneRowRelation
 
 
@@ -163,63 +163,63 @@ Project [hour(cast(cast(null as timestamp_ntz(9)) as 
timestamp_ntz), Some(Americ
 -- !query
 SELECT hour(TIMESTAMP_NTZ '1960-01-01 13:24:35.123456789')
 -- !query analysis
-Project [hour(cast(TimestampNanosVal(-315570924876544, 789) as timestamp_ntz), 
Some(America/Los_Angeles)) AS hour(TimestampNanosVal(-315570924876544, 789))#x]
+Project [hour(cast(1960-01-01 13:24:35.123456789 as timestamp_ntz), 
Some(America/Los_Angeles)) AS hour(TIMESTAMP_NTZ '1960-01-01 
13:24:35.123456789')#x]
 +- OneRowRelation
 
 
 -- !query
 SELECT minute(TIMESTAMP_NTZ '1960-01-01 13:24:35.123456789')
 -- !query analysis
-Project [minute(cast(TimestampNanosVal(-315570924876544, 789) as 
timestamp_ntz), Some(America/Los_Angeles)) AS 
minute(TimestampNanosVal(-315570924876544, 789))#x]
+Project [minute(cast(1960-01-01 13:24:35.123456789 as timestamp_ntz), 
Some(America/Los_Angeles)) AS minute(TIMESTAMP_NTZ '1960-01-01 
13:24:35.123456789')#x]
 +- OneRowRelation
 
 
 -- !query
 SELECT second(TIMESTAMP_NTZ '1960-01-01 13:24:35.123456789')
 -- !query analysis
-Project [second(cast(TimestampNanosVal(-315570924876544, 789) as 
timestamp_ntz), Some(America/Los_Angeles)) AS 
second(TimestampNanosVal(-315570924876544, 789))#x]
+Project [second(cast(1960-01-01 13:24:35.123456789 as timestamp_ntz), 
Some(America/Los_Angeles)) AS second(TIMESTAMP_NTZ '1960-01-01 
13:24:35.123456789')#x]
 +- OneRowRelation
 
 
 -- !query
 SELECT extract(HOUR FROM TIMESTAMP_NTZ '2020-01-01 13:24:35.123456789')
 -- !query analysis
-Project [extract(HOUR, TimestampNanosVal(1577885075123456, 789)) AS 
extract(HOUR FROM TimestampNanosVal(1577885075123456, 789))#x]
+Project [extract(HOUR, 2020-01-01 13:24:35.123456789) AS extract(HOUR FROM 
TIMESTAMP_NTZ '2020-01-01 13:24:35.123456789')#x]
 +- OneRowRelation
 
 
 -- !query
 SELECT extract(MINUTE FROM TIMESTAMP_NTZ '2020-01-01 13:24:35.123456789')
 -- !query analysis
-Project [extract(MINUTE, TimestampNanosVal(1577885075123456, 789)) AS 
extract(MINUTE FROM TimestampNanosVal(1577885075123456, 789))#x]
+Project [extract(MINUTE, 2020-01-01 13:24:35.123456789) AS extract(MINUTE FROM 
TIMESTAMP_NTZ '2020-01-01 13:24:35.123456789')#x]
 +- OneRowRelation
 
 
 -- !query
 SELECT extract(SECOND FROM TIMESTAMP_NTZ '2020-01-01 13:24:35.123456789')
 -- !query analysis
-Project [extract(SECOND, TimestampNanosVal(1577885075123456, 789)) AS 
extract(SECOND FROM TimestampNanosVal(1577885075123456, 789))#x]
+Project [extract(SECOND, 2020-01-01 13:24:35.123456789) AS extract(SECOND FROM 
TIMESTAMP_NTZ '2020-01-01 13:24:35.123456789')#x]
 +- OneRowRelation
 
 
 -- !query
 SELECT date_part('HOUR', TIMESTAMP_NTZ '2020-01-01 13:24:35.123456789')
 -- !query analysis
-Project [date_part(HOUR, TimestampNanosVal(1577885075123456, 789)) AS 
date_part(HOUR, TimestampNanosVal(1577885075123456, 789))#x]
+Project [date_part(HOUR, 2020-01-01 13:24:35.123456789) AS date_part(HOUR, 
TIMESTAMP_NTZ '2020-01-01 13:24:35.123456789')#x]
 +- OneRowRelation
 
 
 -- !query
 SELECT date_part('MINUTE', TIMESTAMP_NTZ '2020-01-01 13:24:35.123456789')
 -- !query analysis
-Project [date_part(MINUTE, TimestampNanosVal(1577885075123456, 789)) AS 
date_part(MINUTE, TimestampNanosVal(1577885075123456, 789))#x]
+Project [date_part(MINUTE, 2020-01-01 13:24:35.123456789) AS date_part(MINUTE, 
TIMESTAMP_NTZ '2020-01-01 13:24:35.123456789')#x]
 +- OneRowRelation
 
 
 -- !query
 SELECT date_part('SECOND', TIMESTAMP_NTZ '2020-01-01 13:24:35.123456789')
 -- !query analysis
-Project [date_part(SECOND, TimestampNanosVal(1577885075123456, 789)) AS 
date_part(SECOND, TimestampNanosVal(1577885075123456, 789))#x]
+Project [date_part(SECOND, 2020-01-01 13:24:35.123456789) AS date_part(SECOND, 
TIMESTAMP_NTZ '2020-01-01 13:24:35.123456789')#x]
 +- OneRowRelation
 
 
@@ -247,5 +247,5 @@ Project [extract(SECOND, cast(null as timestamp_ntz(9))) AS 
extract(SECOND FROM
 -- !query
 SELECT extract(SECOND FROM TIMESTAMP_NTZ '1960-01-01 13:24:35.123456789')
 -- !query analysis
-Project [extract(SECOND, TimestampNanosVal(-315570924876544, 789)) AS 
extract(SECOND FROM TimestampNanosVal(-315570924876544, 789))#x]
+Project [extract(SECOND, 1960-01-01 13:24:35.123456789) AS extract(SECOND FROM 
TIMESTAMP_NTZ '1960-01-01 13:24:35.123456789')#x]
 +- OneRowRelation
diff --git 
a/sql/core/src/test/resources/sql-tests/results/timestamp-ltz-nanos.sql.out 
b/sql/core/src/test/resources/sql-tests/results/timestamp-ltz-nanos.sql.out
index 86e4459072fb..5909ed3b9cbf 100644
--- a/sql/core/src/test/resources/sql-tests/results/timestamp-ltz-nanos.sql.out
+++ b/sql/core/src/test/resources/sql-tests/results/timestamp-ltz-nanos.sql.out
@@ -138,7 +138,7 @@ struct<named_struct(f, CAST(NULL AS 
TIMESTAMP_LTZ(9))):struct<f:timestamp_ltz(9)
 -- !query
 SELECT hour(TIMESTAMP_LTZ '2020-01-01 13:24:35.123456789')
 -- !query schema
-struct<hour(TimestampNanosVal(1577913875123456, 789)):int>
+struct<hour(TIMESTAMP_LTZ '2020-01-01 13:24:35.123456789'):int>
 -- !query output
 13
 
@@ -146,7 +146,7 @@ struct<hour(TimestampNanosVal(1577913875123456, 789)):int>
 -- !query
 SELECT minute(TIMESTAMP_LTZ '2020-01-01 13:24:35.123456789')
 -- !query schema
-struct<minute(TimestampNanosVal(1577913875123456, 789)):int>
+struct<minute(TIMESTAMP_LTZ '2020-01-01 13:24:35.123456789'):int>
 -- !query output
 24
 
@@ -154,7 +154,7 @@ struct<minute(TimestampNanosVal(1577913875123456, 789)):int>
 -- !query
 SELECT second(TIMESTAMP_LTZ '2020-01-01 13:24:35.123456789')
 -- !query schema
-struct<second(TimestampNanosVal(1577913875123456, 789)):int>
+struct<second(TIMESTAMP_LTZ '2020-01-01 13:24:35.123456789'):int>
 -- !query output
 35
 
@@ -186,7 +186,7 @@ NULL
 -- !query
 SELECT hour(TIMESTAMP_LTZ '1960-01-01 13:24:35.123456789')
 -- !query schema
-struct<hour(TimestampNanosVal(-315542124876544, 789)):int>
+struct<hour(TIMESTAMP_LTZ '1960-01-01 13:24:35.123456789'):int>
 -- !query output
 13
 
@@ -194,7 +194,7 @@ struct<hour(TimestampNanosVal(-315542124876544, 789)):int>
 -- !query
 SELECT minute(TIMESTAMP_LTZ '1960-01-01 13:24:35.123456789')
 -- !query schema
-struct<minute(TimestampNanosVal(-315542124876544, 789)):int>
+struct<minute(TIMESTAMP_LTZ '1960-01-01 13:24:35.123456789'):int>
 -- !query output
 24
 
@@ -202,7 +202,7 @@ struct<minute(TimestampNanosVal(-315542124876544, 789)):int>
 -- !query
 SELECT second(TIMESTAMP_LTZ '1960-01-01 13:24:35.123456789')
 -- !query schema
-struct<second(TimestampNanosVal(-315542124876544, 789)):int>
+struct<second(TIMESTAMP_LTZ '1960-01-01 13:24:35.123456789'):int>
 -- !query output
 35
 
@@ -210,7 +210,7 @@ struct<second(TimestampNanosVal(-315542124876544, 789)):int>
 -- !query
 SELECT hour(TIMESTAMP_LTZ '2020-01-01 13:24:35.123456789 Asia/Kolkata')
 -- !query schema
-struct<hour(TimestampNanosVal(1577865275123456, 789)):int>
+struct<hour(TIMESTAMP_LTZ '2019-12-31 23:54:35.123456789'):int>
 -- !query output
 23
 
@@ -218,7 +218,7 @@ struct<hour(TimestampNanosVal(1577865275123456, 789)):int>
 -- !query
 SELECT minute(TIMESTAMP_LTZ '2020-01-01 13:24:35.123456789 Asia/Kolkata')
 -- !query schema
-struct<minute(TimestampNanosVal(1577865275123456, 789)):int>
+struct<minute(TIMESTAMP_LTZ '2019-12-31 23:54:35.123456789'):int>
 -- !query output
 54
 
@@ -226,7 +226,7 @@ struct<minute(TimestampNanosVal(1577865275123456, 789)):int>
 -- !query
 SELECT second(TIMESTAMP_LTZ '2020-01-01 13:24:35.123456789 Asia/Kolkata')
 -- !query schema
-struct<second(TimestampNanosVal(1577865275123456, 789)):int>
+struct<second(TIMESTAMP_LTZ '2019-12-31 23:54:35.123456789'):int>
 -- !query output
 35
 
@@ -234,7 +234,7 @@ struct<second(TimestampNanosVal(1577865275123456, 789)):int>
 -- !query
 SELECT hour(TIMESTAMP_LTZ '2020-01-01 13:24:35.123456789 UTC')
 -- !query schema
-struct<hour(TimestampNanosVal(1577885075123456, 789)):int>
+struct<hour(TIMESTAMP_LTZ '2020-01-01 05:24:35.123456789'):int>
 -- !query output
 5
 
@@ -242,7 +242,7 @@ struct<hour(TimestampNanosVal(1577885075123456, 789)):int>
 -- !query
 SELECT minute(TIMESTAMP_LTZ '2020-01-01 13:24:35.123456789 UTC')
 -- !query schema
-struct<minute(TimestampNanosVal(1577885075123456, 789)):int>
+struct<minute(TIMESTAMP_LTZ '2020-01-01 05:24:35.123456789'):int>
 -- !query output
 24
 
@@ -250,7 +250,7 @@ struct<minute(TimestampNanosVal(1577885075123456, 789)):int>
 -- !query
 SELECT second(TIMESTAMP_LTZ '2020-01-01 13:24:35.123456789 UTC')
 -- !query schema
-struct<second(TimestampNanosVal(1577885075123456, 789)):int>
+struct<second(TIMESTAMP_LTZ '2020-01-01 05:24:35.123456789'):int>
 -- !query output
 35
 
@@ -258,7 +258,7 @@ struct<second(TimestampNanosVal(1577885075123456, 789)):int>
 -- !query
 SELECT extract(HOUR FROM TIMESTAMP_LTZ '2020-01-01 13:24:35.123456789')
 -- !query schema
-struct<extract(HOUR FROM TimestampNanosVal(1577913875123456, 789)):int>
+struct<extract(HOUR FROM TIMESTAMP_LTZ '2020-01-01 13:24:35.123456789'):int>
 -- !query output
 13
 
@@ -266,7 +266,7 @@ struct<extract(HOUR FROM 
TimestampNanosVal(1577913875123456, 789)):int>
 -- !query
 SELECT extract(MINUTE FROM TIMESTAMP_LTZ '2020-01-01 13:24:35.123456789')
 -- !query schema
-struct<extract(MINUTE FROM TimestampNanosVal(1577913875123456, 789)):int>
+struct<extract(MINUTE FROM TIMESTAMP_LTZ '2020-01-01 13:24:35.123456789'):int>
 -- !query output
 24
 
@@ -274,7 +274,7 @@ struct<extract(MINUTE FROM 
TimestampNanosVal(1577913875123456, 789)):int>
 -- !query
 SELECT extract(SECOND FROM TIMESTAMP_LTZ '2020-01-01 13:24:35.123456789')
 -- !query schema
-struct<extract(SECOND FROM TimestampNanosVal(1577913875123456, 
789)):decimal(11,9)>
+struct<extract(SECOND FROM TIMESTAMP_LTZ '2020-01-01 
13:24:35.123456789'):decimal(11,9)>
 -- !query output
 35.123456789
 
@@ -282,7 +282,7 @@ struct<extract(SECOND FROM 
TimestampNanosVal(1577913875123456, 789)):decimal(11,
 -- !query
 SELECT date_part('HOUR', TIMESTAMP_LTZ '2020-01-01 13:24:35.123456789')
 -- !query schema
-struct<date_part(HOUR, TimestampNanosVal(1577913875123456, 789)):int>
+struct<date_part(HOUR, TIMESTAMP_LTZ '2020-01-01 13:24:35.123456789'):int>
 -- !query output
 13
 
@@ -290,7 +290,7 @@ struct<date_part(HOUR, TimestampNanosVal(1577913875123456, 
789)):int>
 -- !query
 SELECT date_part('MINUTE', TIMESTAMP_LTZ '2020-01-01 13:24:35.123456789')
 -- !query schema
-struct<date_part(MINUTE, TimestampNanosVal(1577913875123456, 789)):int>
+struct<date_part(MINUTE, TIMESTAMP_LTZ '2020-01-01 13:24:35.123456789'):int>
 -- !query output
 24
 
@@ -298,7 +298,7 @@ struct<date_part(MINUTE, 
TimestampNanosVal(1577913875123456, 789)):int>
 -- !query
 SELECT date_part('SECOND', TIMESTAMP_LTZ '2020-01-01 13:24:35.123456789')
 -- !query schema
-struct<date_part(SECOND, TimestampNanosVal(1577913875123456, 
789)):decimal(11,9)>
+struct<date_part(SECOND, TIMESTAMP_LTZ '2020-01-01 
13:24:35.123456789'):decimal(11,9)>
 -- !query output
 35.123456789
 
@@ -330,7 +330,7 @@ NULL
 -- !query
 SELECT extract(SECOND FROM TIMESTAMP_LTZ '1960-01-01 13:24:35.123456789')
 -- !query schema
-struct<extract(SECOND FROM TimestampNanosVal(-315542124876544, 
789)):decimal(11,9)>
+struct<extract(SECOND FROM TIMESTAMP_LTZ '1960-01-01 
13:24:35.123456789'):decimal(11,9)>
 -- !query output
 35.123456789
 
@@ -338,7 +338,7 @@ struct<extract(SECOND FROM 
TimestampNanosVal(-315542124876544, 789)):decimal(11,
 -- !query
 SELECT extract(MINUTE FROM TIMESTAMP_LTZ '2020-01-01 13:24:35.123456789 
Asia/Kolkata')
 -- !query schema
-struct<extract(MINUTE FROM TimestampNanosVal(1577865275123456, 789)):int>
+struct<extract(MINUTE FROM TIMESTAMP_LTZ '2019-12-31 23:54:35.123456789'):int>
 -- !query output
 54
 
@@ -346,6 +346,6 @@ struct<extract(MINUTE FROM 
TimestampNanosVal(1577865275123456, 789)):int>
 -- !query
 SELECT extract(SECOND FROM TIMESTAMP_LTZ '2020-01-01 13:24:35.123456789 
Asia/Kolkata')
 -- !query schema
-struct<extract(SECOND FROM TimestampNanosVal(1577865275123456, 
789)):decimal(11,9)>
+struct<extract(SECOND FROM TIMESTAMP_LTZ '2019-12-31 
23:54:35.123456789'):decimal(11,9)>
 -- !query output
 35.123456789
diff --git 
a/sql/core/src/test/resources/sql-tests/results/timestamp-ntz-nanos.sql.out 
b/sql/core/src/test/resources/sql-tests/results/timestamp-ntz-nanos.sql.out
index c1aa8b2c2ffb..236f260e3160 100644
--- a/sql/core/src/test/resources/sql-tests/results/timestamp-ntz-nanos.sql.out
+++ b/sql/core/src/test/resources/sql-tests/results/timestamp-ntz-nanos.sql.out
@@ -138,7 +138,7 @@ struct<named_struct(f, CAST(NULL AS 
TIMESTAMP_NTZ(9))):struct<f:timestamp_ntz(9)
 -- !query
 SELECT hour(TIMESTAMP_NTZ '2020-01-01 13:24:35.123456789')
 -- !query schema
-struct<hour(TimestampNanosVal(1577885075123456, 789)):int>
+struct<hour(TIMESTAMP_NTZ '2020-01-01 13:24:35.123456789'):int>
 -- !query output
 13
 
@@ -146,7 +146,7 @@ struct<hour(TimestampNanosVal(1577885075123456, 789)):int>
 -- !query
 SELECT minute(TIMESTAMP_NTZ '2020-01-01 13:24:35.123456789')
 -- !query schema
-struct<minute(TimestampNanosVal(1577885075123456, 789)):int>
+struct<minute(TIMESTAMP_NTZ '2020-01-01 13:24:35.123456789'):int>
 -- !query output
 24
 
@@ -154,7 +154,7 @@ struct<minute(TimestampNanosVal(1577885075123456, 789)):int>
 -- !query
 SELECT second(TIMESTAMP_NTZ '2020-01-01 13:24:35.123456789')
 -- !query schema
-struct<second(TimestampNanosVal(1577885075123456, 789)):int>
+struct<second(TIMESTAMP_NTZ '2020-01-01 13:24:35.123456789'):int>
 -- !query output
 35
 
@@ -186,7 +186,7 @@ NULL
 -- !query
 SELECT hour(TIMESTAMP_NTZ '1960-01-01 13:24:35.123456789')
 -- !query schema
-struct<hour(TimestampNanosVal(-315570924876544, 789)):int>
+struct<hour(TIMESTAMP_NTZ '1960-01-01 13:24:35.123456789'):int>
 -- !query output
 13
 
@@ -194,7 +194,7 @@ struct<hour(TimestampNanosVal(-315570924876544, 789)):int>
 -- !query
 SELECT minute(TIMESTAMP_NTZ '1960-01-01 13:24:35.123456789')
 -- !query schema
-struct<minute(TimestampNanosVal(-315570924876544, 789)):int>
+struct<minute(TIMESTAMP_NTZ '1960-01-01 13:24:35.123456789'):int>
 -- !query output
 24
 
@@ -202,7 +202,7 @@ struct<minute(TimestampNanosVal(-315570924876544, 789)):int>
 -- !query
 SELECT second(TIMESTAMP_NTZ '1960-01-01 13:24:35.123456789')
 -- !query schema
-struct<second(TimestampNanosVal(-315570924876544, 789)):int>
+struct<second(TIMESTAMP_NTZ '1960-01-01 13:24:35.123456789'):int>
 -- !query output
 35
 
@@ -210,7 +210,7 @@ struct<second(TimestampNanosVal(-315570924876544, 789)):int>
 -- !query
 SELECT extract(HOUR FROM TIMESTAMP_NTZ '2020-01-01 13:24:35.123456789')
 -- !query schema
-struct<extract(HOUR FROM TimestampNanosVal(1577885075123456, 789)):int>
+struct<extract(HOUR FROM TIMESTAMP_NTZ '2020-01-01 13:24:35.123456789'):int>
 -- !query output
 13
 
@@ -218,7 +218,7 @@ struct<extract(HOUR FROM 
TimestampNanosVal(1577885075123456, 789)):int>
 -- !query
 SELECT extract(MINUTE FROM TIMESTAMP_NTZ '2020-01-01 13:24:35.123456789')
 -- !query schema
-struct<extract(MINUTE FROM TimestampNanosVal(1577885075123456, 789)):int>
+struct<extract(MINUTE FROM TIMESTAMP_NTZ '2020-01-01 13:24:35.123456789'):int>
 -- !query output
 24
 
@@ -226,7 +226,7 @@ struct<extract(MINUTE FROM 
TimestampNanosVal(1577885075123456, 789)):int>
 -- !query
 SELECT extract(SECOND FROM TIMESTAMP_NTZ '2020-01-01 13:24:35.123456789')
 -- !query schema
-struct<extract(SECOND FROM TimestampNanosVal(1577885075123456, 
789)):decimal(11,9)>
+struct<extract(SECOND FROM TIMESTAMP_NTZ '2020-01-01 
13:24:35.123456789'):decimal(11,9)>
 -- !query output
 35.123456789
 
@@ -234,7 +234,7 @@ struct<extract(SECOND FROM 
TimestampNanosVal(1577885075123456, 789)):decimal(11,
 -- !query
 SELECT date_part('HOUR', TIMESTAMP_NTZ '2020-01-01 13:24:35.123456789')
 -- !query schema
-struct<date_part(HOUR, TimestampNanosVal(1577885075123456, 789)):int>
+struct<date_part(HOUR, TIMESTAMP_NTZ '2020-01-01 13:24:35.123456789'):int>
 -- !query output
 13
 
@@ -242,7 +242,7 @@ struct<date_part(HOUR, TimestampNanosVal(1577885075123456, 
789)):int>
 -- !query
 SELECT date_part('MINUTE', TIMESTAMP_NTZ '2020-01-01 13:24:35.123456789')
 -- !query schema
-struct<date_part(MINUTE, TimestampNanosVal(1577885075123456, 789)):int>
+struct<date_part(MINUTE, TIMESTAMP_NTZ '2020-01-01 13:24:35.123456789'):int>
 -- !query output
 24
 
@@ -250,7 +250,7 @@ struct<date_part(MINUTE, 
TimestampNanosVal(1577885075123456, 789)):int>
 -- !query
 SELECT date_part('SECOND', TIMESTAMP_NTZ '2020-01-01 13:24:35.123456789')
 -- !query schema
-struct<date_part(SECOND, TimestampNanosVal(1577885075123456, 
789)):decimal(11,9)>
+struct<date_part(SECOND, TIMESTAMP_NTZ '2020-01-01 
13:24:35.123456789'):decimal(11,9)>
 -- !query output
 35.123456789
 
@@ -282,6 +282,6 @@ NULL
 -- !query
 SELECT extract(SECOND FROM TIMESTAMP_NTZ '1960-01-01 13:24:35.123456789')
 -- !query schema
-struct<extract(SECOND FROM TimestampNanosVal(-315570924876544, 
789)):decimal(11,9)>
+struct<extract(SECOND FROM TIMESTAMP_NTZ '1960-01-01 
13:24:35.123456789'):decimal(11,9)>
 -- !query output
 35.123456789


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]


Reply via email to