diff --git a/sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/analysis/FunctionRegistry.scala b/sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/analysis/FunctionRegistry.scala
index 558579cdb80a..5c0c7396a851 100644
--- a/sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/analysis/FunctionRegistry.scala
+++ b/sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/analysis/FunctionRegistry.scala
@@ -530,8 +530,8 @@ object FunctionRegistry {
expression[FormatString]("format_string"),
expression[ToNumber]("to_number"),
expression[TryToNumber]("try_to_number"),
- expression[ToCharacter]("to_char"),
- expression[ToCharacter]("to_varchar", setAlias = true, Some("3.5.0")),
+ expressionBuilder("to_char", ToCharacterBuilder),
+ expressionBuilder("to_varchar", ToCharacterBuilder, setAlias = true, Some("3.5.0")),
expression[GetJsonObject]("get_json_object"),
expression[InitCap]("initcap"),
expression[StringInstr]("instr"),
diff --git a/sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/expressions/numberFormatExpressions.scala b/sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/expressions/numberFormatExpressions.scala
index 2d4f0438db76..3a424ac21c50 100644
--- a/sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/expressions/numberFormatExpressions.scala
+++ b/sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/expressions/numberFormatExpressions.scala
@@ -19,13 +19,14 @@ package org.apache.spark.sql.catalyst.expressions
import java.util.Locale
-import org.apache.spark.sql.catalyst.analysis.TypeCheckResult
+import org.apache.spark.sql.catalyst.analysis.{ExpressionBuilder, TypeCheckResult}
import org.apache.spark.sql.catalyst.analysis.TypeCheckResult.DataTypeMismatch
import org.apache.spark.sql.catalyst.expressions.Cast._
import org.apache.spark.sql.catalyst.expressions.codegen.{CodegenContext, CodeGenerator, ExprCode}
import org.apache.spark.sql.catalyst.expressions.codegen.Block.BlockHelper
import org.apache.spark.sql.catalyst.util.ToNumberParser
-import org.apache.spark.sql.types.{AbstractDataType, DataType, Decimal, DecimalType, StringType}
+import org.apache.spark.sql.errors.QueryCompilationErrors
+import org.apache.spark.sql.types.{AbstractDataType, DataType, DatetimeType, Decimal, DecimalType, StringType}
import org.apache.spark.unsafe.types.UTF8String
abstract class ToNumberBase(left: Expression, right: Expression, errorOnFail: Boolean)
@@ -181,12 +182,13 @@ case class TryToNumber(left: Expression, right: Expression)
}
/**
- * A function that converts decimal values to strings, returning NULL if the decimal value fails to
+ * A function that converts decimal/datetime values to strings, returning NULL if the value fails to
* match the format string.
*/
+// scalastyle:off line.size.limit
@ExpressionDescription(
usage = """
- _FUNC_(numberExpr, formatExpr) - Convert `numberExpr` to a string based on the `formatExpr`.
+ _FUNC_(expr, format) - Convert `expr` to a string based on the `format`.
Throws an exception if the conversion fails. The format can consist of the following
characters, case insensitive:
'0' or '9': Specifies an expected digit between 0 and 9. A sequence of 0 or 9 in the format
@@ -206,6 +208,7 @@ case class TryToNumber(left: Expression, right: Expression)
'PR': Only allowed at the end of the format string; specifies that the result string will be
wrapped by angle brackets if the input value is negative.
('<1>').
+ If `expr` is a datetime, `format` shall be a valid datetime pattern, see Datetime Patterns.
""",
examples = """
Examples:
@@ -219,9 +222,27 @@ case class TryToNumber(left: Expression, right: Expression)
$78.12
> SELECT _FUNC_(-12454.8, '99G999D9S');
12,454.8-
+ > SELECT _FUNC_(date'2016-04-08', 'y');
+ 2016
""",
since = "3.4.0",
group = "string_funcs")
+// scalastyle:on line.size.limit
+object ToCharacterBuilder extends ExpressionBuilder {
+ override def build(funcName: String, expressions: Seq[Expression]): Expression = {
+ val numArgs = expressions.length
+ if (expressions.length == 2) {
+ val inputExpr = expressions.head
+ inputExpr.dataType match {
+ case _: DatetimeType => DateFormatClass(inputExpr, expressions(1))
+ case _ => ToCharacter(inputExpr, expressions(1))
+ }
+ } else {
+ throw QueryCompilationErrors.wrongNumArgsError(funcName, Seq(2), numArgs)
+ }
+ }
+}
+
case class ToCharacter(left: Expression, right: Expression)
extends BinaryExpression with ImplicitCastInputTypes with NullIntolerant {
private lazy val numberFormatter = {
diff --git a/sql/core/src/main/scala/org/apache/spark/sql/functions.scala b/sql/core/src/main/scala/org/apache/spark/sql/functions.scala
index e7e8b945d918..679b211ee6bd 100644
--- a/sql/core/src/main/scala/org/apache/spark/sql/functions.scala
+++ b/sql/core/src/main/scala/org/apache/spark/sql/functions.scala
@@ -4405,9 +4405,7 @@ object functions {
* @group string_funcs
* @since 3.5.0
*/
- def to_char(e: Column, format: Column): Column = withExpr {
- ToCharacter(e.expr, format.expr)
- }
+ def to_char(e: Column, format: Column): Column = call_function("to_char", e, format)
/**
* Convert `e` to a string based on the `format`.
@@ -4433,9 +4431,7 @@ object functions {
* @group string_funcs
* @since 3.5.0
*/
- def to_varchar(e: Column, format: Column): Column = withExpr {
- ToCharacter(e.expr, format.expr)
- }
+ def to_varchar(e: Column, format: Column): Column = to_char(e, format)
/**
* Convert string 'e' to a number based on the string format 'format'.
diff --git a/sql/core/src/test/resources/sql-tests/analyzer-results/datetime-formatting-legacy.sql.out b/sql/core/src/test/resources/sql-tests/analyzer-results/datetime-formatting-legacy.sql.out
index 376f00723355..bc33537b3a8e 100644
--- a/sql/core/src/test/resources/sql-tests/analyzer-results/datetime-formatting-legacy.sql.out
+++ b/sql/core/src/test/resources/sql-tests/analyzer-results/datetime-formatting-legacy.sql.out
@@ -23,9 +23,9 @@ CreateViewCommand `v`, select col from values
-- !query
-select col, date_format(col, 'G GG GGG GGGG') from v
+select col, date_format(col, 'G GG GGG GGGG'), to_char(col, 'G GG GGG GGGG'), to_varchar(col, 'G GG GGG GGGG') from v
-- !query analysis
-Project [col#x, date_format(col#x, G GG GGG GGGG, Some(America/Los_Angeles)) AS date_format(col, G GG GGG GGGG)#x]
+Project [col#x, date_format(col#x, G GG GGG GGGG, Some(America/Los_Angeles)) AS date_format(col, G GG GGG GGGG)#x, date_format(col#x, G GG GGG GGGG, Some(America/Los_Angeles)) AS date_format(col, G GG GGG GGGG)#x, date_format(col#x, G GG GGG GGGG, Some(America/Los_Angeles)) AS date_format(col, G GG GGG GGGG)#x]
+- SubqueryAlias v
+- View (`v`, [col#x])
+- Project [cast(col#x as timestamp) AS col#x]
@@ -35,9 +35,9 @@ Project [col#x, date_format(col#x, G GG GGG GGGG, Some(America/Los_Angeles)) AS
-- !query
-select col, date_format(col, 'y yy yyy yyyy yyyyy yyyyyy') from v
+select col, date_format(col, 'y yy yyy yyyy yyyyy yyyyyy'), to_char(col, 'y yy yyy yyyy yyyyy yyyyyy'), to_varchar(col, 'y yy yyy yyyy yyyyy yyyyyy') from v
-- !query analysis
-Project [col#x, date_format(col#x, y yy yyy yyyy yyyyy yyyyyy, Some(America/Los_Angeles)) AS date_format(col, y yy yyy yyyy yyyyy yyyyyy)#x]
+Project [col#x, date_format(col#x, y yy yyy yyyy yyyyy yyyyyy, Some(America/Los_Angeles)) AS date_format(col, y yy yyy yyyy yyyyy yyyyyy)#x, date_format(col#x, y yy yyy yyyy yyyyy yyyyyy, Some(America/Los_Angeles)) AS date_format(col, y yy yyy yyyy yyyyy yyyyyy)#x, date_format(col#x, y yy yyy yyyy yyyyy yyyyyy, Some(America/Los_Angeles)) AS date_format(col, y yy yyy yyyy yyyyy yyyyyy)#x]
+- SubqueryAlias v
+- View (`v`, [col#x])
+- Project [cast(col#x as timestamp) AS col#x]
@@ -47,9 +47,9 @@ Project [col#x, date_format(col#x, y yy yyy yyyy yyyyy yyyyyy, Some(America/Los_
-- !query
-select col, date_format(col, 'q qq') from v
+select col, date_format(col, 'q qq'), to_char(col, 'q qq'), to_varchar(col, 'q qq') from v
-- !query analysis
-Project [col#x, date_format(col#x, q qq, Some(America/Los_Angeles)) AS date_format(col, q qq)#x]
+Project [col#x, date_format(col#x, q qq, Some(America/Los_Angeles)) AS date_format(col, q qq)#x, date_format(col#x, q qq, Some(America/Los_Angeles)) AS date_format(col, q qq)#x, date_format(col#x, q qq, Some(America/Los_Angeles)) AS date_format(col, q qq)#x]
+- SubqueryAlias v
+- View (`v`, [col#x])
+- Project [cast(col#x as timestamp) AS col#x]
@@ -59,9 +59,9 @@ Project [col#x, date_format(col#x, q qq, Some(America/Los_Angeles)) AS date_form
-- !query
-select col, date_format(col, 'Q QQ QQQ QQQQ') from v
+select col, date_format(col, 'Q QQ QQQ QQQQ'), to_char(col, 'Q QQ QQQ QQQQ'), to_varchar(col, 'Q QQ QQQ QQQQ') from v
-- !query analysis
-Project [col#x, date_format(col#x, Q QQ QQQ QQQQ, Some(America/Los_Angeles)) AS date_format(col, Q QQ QQQ QQQQ)#x]
+Project [col#x, date_format(col#x, Q QQ QQQ QQQQ, Some(America/Los_Angeles)) AS date_format(col, Q QQ QQQ QQQQ)#x, date_format(col#x, Q QQ QQQ QQQQ, Some(America/Los_Angeles)) AS date_format(col, Q QQ QQQ QQQQ)#x, date_format(col#x, Q QQ QQQ QQQQ, Some(America/Los_Angeles)) AS date_format(col, Q QQ QQQ QQQQ)#x]
+- SubqueryAlias v
+- View (`v`, [col#x])
+- Project [cast(col#x as timestamp) AS col#x]
@@ -71,9 +71,9 @@ Project [col#x, date_format(col#x, Q QQ QQQ QQQQ, Some(America/Los_Angeles)) AS
-- !query
-select col, date_format(col, 'M MM MMM MMMM') from v
+select col, date_format(col, 'M MM MMM MMMM'), to_char(col, 'M MM MMM MMMM'), to_varchar(col, 'M MM MMM MMMM') from v
-- !query analysis
-Project [col#x, date_format(col#x, M MM MMM MMMM, Some(America/Los_Angeles)) AS date_format(col, M MM MMM MMMM)#x]
+Project [col#x, date_format(col#x, M MM MMM MMMM, Some(America/Los_Angeles)) AS date_format(col, M MM MMM MMMM)#x, date_format(col#x, M MM MMM MMMM, Some(America/Los_Angeles)) AS date_format(col, M MM MMM MMMM)#x, date_format(col#x, M MM MMM MMMM, Some(America/Los_Angeles)) AS date_format(col, M MM MMM MMMM)#x]
+- SubqueryAlias v
+- View (`v`, [col#x])
+- Project [cast(col#x as timestamp) AS col#x]
@@ -83,9 +83,9 @@ Project [col#x, date_format(col#x, M MM MMM MMMM, Some(America/Los_Angeles)) AS
-- !query
-select col, date_format(col, 'L LL') from v
+select col, date_format(col, 'L LL'), to_char(col, 'L LL'), to_varchar(col, 'L LL') from v
-- !query analysis
-Project [col#x, date_format(col#x, L LL, Some(America/Los_Angeles)) AS date_format(col, L LL)#x]
+Project [col#x, date_format(col#x, L LL, Some(America/Los_Angeles)) AS date_format(col, L LL)#x, date_format(col#x, L LL, Some(America/Los_Angeles)) AS date_format(col, L LL)#x, date_format(col#x, L LL, Some(America/Los_Angeles)) AS date_format(col, L LL)#x]
+- SubqueryAlias v
+- View (`v`, [col#x])
+- Project [cast(col#x as timestamp) AS col#x]
@@ -95,9 +95,9 @@ Project [col#x, date_format(col#x, L LL, Some(America/Los_Angeles)) AS date_form
-- !query
-select col, date_format(col, 'E EE EEE EEEE') from v
+select col, date_format(col, 'E EE EEE EEEE'), to_char(col, 'E EE EEE EEEE'), to_varchar(col, 'E EE EEE EEEE') from v
-- !query analysis
-Project [col#x, date_format(col#x, E EE EEE EEEE, Some(America/Los_Angeles)) AS date_format(col, E EE EEE EEEE)#x]
+Project [col#x, date_format(col#x, E EE EEE EEEE, Some(America/Los_Angeles)) AS date_format(col, E EE EEE EEEE)#x, date_format(col#x, E EE EEE EEEE, Some(America/Los_Angeles)) AS date_format(col, E EE EEE EEEE)#x, date_format(col#x, E EE EEE EEEE, Some(America/Los_Angeles)) AS date_format(col, E EE EEE EEEE)#x]
+- SubqueryAlias v
+- View (`v`, [col#x])
+- Project [cast(col#x as timestamp) AS col#x]
@@ -107,9 +107,9 @@ Project [col#x, date_format(col#x, E EE EEE EEEE, Some(America/Los_Angeles)) AS
-- !query
-select col, date_format(col, 'F') from v
+select col, date_format(col, 'F'), to_char(col, 'F'), to_varchar(col, 'F') from v
-- !query analysis
-Project [col#x, date_format(col#x, F, Some(America/Los_Angeles)) AS date_format(col, F)#x]
+Project [col#x, date_format(col#x, F, Some(America/Los_Angeles)) AS date_format(col, F)#x, date_format(col#x, F, Some(America/Los_Angeles)) AS date_format(col, F)#x, date_format(col#x, F, Some(America/Los_Angeles)) AS date_format(col, F)#x]
+- SubqueryAlias v
+- View (`v`, [col#x])
+- Project [cast(col#x as timestamp) AS col#x]
@@ -119,9 +119,9 @@ Project [col#x, date_format(col#x, F, Some(America/Los_Angeles)) AS date_format(
-- !query
-select col, date_format(col, 'd dd') from v
+select col, date_format(col, 'd dd'), to_char(col, 'd dd'), to_varchar(col, 'd dd') from v
-- !query analysis
-Project [col#x, date_format(col#x, d dd, Some(America/Los_Angeles)) AS date_format(col, d dd)#x]
+Project [col#x, date_format(col#x, d dd, Some(America/Los_Angeles)) AS date_format(col, d dd)#x, date_format(col#x, d dd, Some(America/Los_Angeles)) AS date_format(col, d dd)#x, date_format(col#x, d dd, Some(America/Los_Angeles)) AS date_format(col, d dd)#x]
+- SubqueryAlias v
+- View (`v`, [col#x])
+- Project [cast(col#x as timestamp) AS col#x]
@@ -131,15 +131,15 @@ Project [col#x, date_format(col#x, d dd, Some(America/Los_Angeles)) AS date_form
-- !query
-select col, date_format(col, 'DD') from v where col = timestamp '2100-01-01 01:33:33.123America/Los_Angeles'
+select col, date_format(col, 'DD'), to_char(col, 'DD'), to_varchar(col, 'DD') from v where col = timestamp '2100-01-01 01:33:33.123America/Los_Angeles'
-- !query analysis
[Analyzer test output redacted due to nondeterminism]
-- !query
-select col, date_format(col, 'D DDD') from v
+select col, date_format(col, 'D DDD'), to_char(col, 'D DDD'), to_varchar(col, 'D DDD') from v
-- !query analysis
-Project [col#x, date_format(col#x, D DDD, Some(America/Los_Angeles)) AS date_format(col, D DDD)#x]
+Project [col#x, date_format(col#x, D DDD, Some(America/Los_Angeles)) AS date_format(col, D DDD)#x, date_format(col#x, D DDD, Some(America/Los_Angeles)) AS date_format(col, D DDD)#x, date_format(col#x, D DDD, Some(America/Los_Angeles)) AS date_format(col, D DDD)#x]
+- SubqueryAlias v
+- View (`v`, [col#x])
+- Project [cast(col#x as timestamp) AS col#x]
@@ -149,9 +149,9 @@ Project [col#x, date_format(col#x, D DDD, Some(America/Los_Angeles)) AS date_for
-- !query
-select col, date_format(col, 'H HH') from v
+select col, date_format(col, 'H HH'), to_char(col, 'H HH'), to_varchar(col, 'H HH') from v
-- !query analysis
-Project [col#x, date_format(col#x, H HH, Some(America/Los_Angeles)) AS date_format(col, H HH)#x]
+Project [col#x, date_format(col#x, H HH, Some(America/Los_Angeles)) AS date_format(col, H HH)#x, date_format(col#x, H HH, Some(America/Los_Angeles)) AS date_format(col, H HH)#x, date_format(col#x, H HH, Some(America/Los_Angeles)) AS date_format(col, H HH)#x]
+- SubqueryAlias v
+- View (`v`, [col#x])
+- Project [cast(col#x as timestamp) AS col#x]
@@ -161,9 +161,9 @@ Project [col#x, date_format(col#x, H HH, Some(America/Los_Angeles)) AS date_form
-- !query
-select col, date_format(col, 'h hh') from v
+select col, date_format(col, 'h hh'), to_char(col, 'h hh'), to_varchar(col, 'h hh') from v
-- !query analysis
-Project [col#x, date_format(col#x, h hh, Some(America/Los_Angeles)) AS date_format(col, h hh)#x]
+Project [col#x, date_format(col#x, h hh, Some(America/Los_Angeles)) AS date_format(col, h hh)#x, date_format(col#x, h hh, Some(America/Los_Angeles)) AS date_format(col, h hh)#x, date_format(col#x, h hh, Some(America/Los_Angeles)) AS date_format(col, h hh)#x]
+- SubqueryAlias v
+- View (`v`, [col#x])
+- Project [cast(col#x as timestamp) AS col#x]
@@ -173,9 +173,9 @@ Project [col#x, date_format(col#x, h hh, Some(America/Los_Angeles)) AS date_form
-- !query
-select col, date_format(col, 'k kk') from v
+select col, date_format(col, 'k kk'), to_char(col, 'k kk'), to_varchar(col, 'k kk') from v
-- !query analysis
-Project [col#x, date_format(col#x, k kk, Some(America/Los_Angeles)) AS date_format(col, k kk)#x]
+Project [col#x, date_format(col#x, k kk, Some(America/Los_Angeles)) AS date_format(col, k kk)#x, date_format(col#x, k kk, Some(America/Los_Angeles)) AS date_format(col, k kk)#x, date_format(col#x, k kk, Some(America/Los_Angeles)) AS date_format(col, k kk)#x]
+- SubqueryAlias v
+- View (`v`, [col#x])
+- Project [cast(col#x as timestamp) AS col#x]
@@ -185,9 +185,9 @@ Project [col#x, date_format(col#x, k kk, Some(America/Los_Angeles)) AS date_form
-- !query
-select col, date_format(col, 'K KK') from v
+select col, date_format(col, 'K KK'), to_char(col, 'K KK'), to_varchar(col, 'K KK') from v
-- !query analysis
-Project [col#x, date_format(col#x, K KK, Some(America/Los_Angeles)) AS date_format(col, K KK)#x]
+Project [col#x, date_format(col#x, K KK, Some(America/Los_Angeles)) AS date_format(col, K KK)#x, date_format(col#x, K KK, Some(America/Los_Angeles)) AS date_format(col, K KK)#x, date_format(col#x, K KK, Some(America/Los_Angeles)) AS date_format(col, K KK)#x]
+- SubqueryAlias v
+- View (`v`, [col#x])
+- Project [cast(col#x as timestamp) AS col#x]
@@ -197,9 +197,9 @@ Project [col#x, date_format(col#x, K KK, Some(America/Los_Angeles)) AS date_form
-- !query
-select col, date_format(col, 'm mm') from v
+select col, date_format(col, 'm mm'), to_char(col, 'm mm'), to_varchar(col, 'm mm') from v
-- !query analysis
-Project [col#x, date_format(col#x, m mm, Some(America/Los_Angeles)) AS date_format(col, m mm)#x]
+Project [col#x, date_format(col#x, m mm, Some(America/Los_Angeles)) AS date_format(col, m mm)#x, date_format(col#x, m mm, Some(America/Los_Angeles)) AS date_format(col, m mm)#x, date_format(col#x, m mm, Some(America/Los_Angeles)) AS date_format(col, m mm)#x]
+- SubqueryAlias v
+- View (`v`, [col#x])
+- Project [cast(col#x as timestamp) AS col#x]
@@ -209,9 +209,9 @@ Project [col#x, date_format(col#x, m mm, Some(America/Los_Angeles)) AS date_form
-- !query
-select col, date_format(col, 's ss') from v
+select col, date_format(col, 's ss'), to_char(col, 's ss'), to_varchar(col, 's ss') from v
-- !query analysis
-Project [col#x, date_format(col#x, s ss, Some(America/Los_Angeles)) AS date_format(col, s ss)#x]
+Project [col#x, date_format(col#x, s ss, Some(America/Los_Angeles)) AS date_format(col, s ss)#x, date_format(col#x, s ss, Some(America/Los_Angeles)) AS date_format(col, s ss)#x, date_format(col#x, s ss, Some(America/Los_Angeles)) AS date_format(col, s ss)#x]
+- SubqueryAlias v
+- View (`v`, [col#x])
+- Project [cast(col#x as timestamp) AS col#x]
@@ -221,9 +221,9 @@ Project [col#x, date_format(col#x, s ss, Some(America/Los_Angeles)) AS date_form
-- !query
-select col, date_format(col, 'S SS SSS SSSS SSSSS SSSSSS SSSSSSS SSSSSSSS SSSSSSSSS') from v
+select col, date_format(col, 'S SS SSS SSSS SSSSS SSSSSS SSSSSSS SSSSSSSS SSSSSSSSS'), to_char(col, 'S SS SSS SSSS SSSSS SSSSSS SSSSSSS SSSSSSSS SSSSSSSSS'), to_varchar(col, 'S SS SSS SSSS SSSSS SSSSSS SSSSSSS SSSSSSSS SSSSSSSSS') from v
-- !query analysis
-Project [col#x, date_format(col#x, S SS SSS SSSS SSSSS SSSSSS SSSSSSS SSSSSSSS SSSSSSSSS, Some(America/Los_Angeles)) AS date_format(col, S SS SSS SSSS SSSSS SSSSSS SSSSSSS SSSSSSSS SSSSSSSSS)#x]
+Project [col#x, date_format(col#x, S SS SSS SSSS SSSSS SSSSSS SSSSSSS SSSSSSSS SSSSSSSSS, Some(America/Los_Angeles)) AS date_format(col, S SS SSS SSSS SSSSS SSSSSS SSSSSSS SSSSSSSS SSSSSSSSS)#x, date_format(col#x, S SS SSS SSSS SSSSS SSSSSS SSSSSSS SSSSSSSS SSSSSSSSS, Some(America/Los_Angeles)) AS date_format(col, S SS SSS SSSS SSSSS SSSSSS SSSSSSS SSSSSSSS SSSSSSSSS)#x, date_format(col#x, S SS SSS SSSS SSSSS SSSSSS SSSSSSS SSSSSSSS SSSSSSSSS, Some(America/Los_Angeles)) AS date_format(col, S SS SSS SSSS SSSSS SSSSSS SSSSSSS SSSSSSSS SSSSSSSSS)#x]
+- SubqueryAlias v
+- View (`v`, [col#x])
+- Project [cast(col#x as timestamp) AS col#x]
@@ -233,9 +233,9 @@ Project [col#x, date_format(col#x, S SS SSS SSSS SSSSS SSSSSS SSSSSSS SSSSSSSS S
-- !query
-select col, date_format(col, 'a') from v
+select col, date_format(col, 'a'), to_char(col, 'a'), to_varchar(col, 'a') from v
-- !query analysis
-Project [col#x, date_format(col#x, a, Some(America/Los_Angeles)) AS date_format(col, a)#x]
+Project [col#x, date_format(col#x, a, Some(America/Los_Angeles)) AS date_format(col, a)#x, date_format(col#x, a, Some(America/Los_Angeles)) AS date_format(col, a)#x, date_format(col#x, a, Some(America/Los_Angeles)) AS date_format(col, a)#x]
+- SubqueryAlias v
+- View (`v`, [col#x])
+- Project [cast(col#x as timestamp) AS col#x]
@@ -245,9 +245,9 @@ Project [col#x, date_format(col#x, a, Some(America/Los_Angeles)) AS date_format(
-- !query
-select col, date_format(col, 'VV') from v
+select col, date_format(col, 'VV'), to_char(col, 'VV'), to_varchar(col, 'VV') from v
-- !query analysis
-Project [col#x, date_format(col#x, VV, Some(America/Los_Angeles)) AS date_format(col, VV)#x]
+Project [col#x, date_format(col#x, VV, Some(America/Los_Angeles)) AS date_format(col, VV)#x, date_format(col#x, VV, Some(America/Los_Angeles)) AS date_format(col, VV)#x, date_format(col#x, VV, Some(America/Los_Angeles)) AS date_format(col, VV)#x]
+- SubqueryAlias v
+- View (`v`, [col#x])
+- Project [cast(col#x as timestamp) AS col#x]
@@ -257,9 +257,9 @@ Project [col#x, date_format(col#x, VV, Some(America/Los_Angeles)) AS date_format
-- !query
-select col, date_format(col, 'z zz zzz zzzz') from v
+select col, date_format(col, 'z zz zzz zzzz'), to_char(col, 'z zz zzz zzzz'), to_varchar(col, 'z zz zzz zzzz') from v
-- !query analysis
-Project [col#x, date_format(col#x, z zz zzz zzzz, Some(America/Los_Angeles)) AS date_format(col, z zz zzz zzzz)#x]
+Project [col#x, date_format(col#x, z zz zzz zzzz, Some(America/Los_Angeles)) AS date_format(col, z zz zzz zzzz)#x, date_format(col#x, z zz zzz zzzz, Some(America/Los_Angeles)) AS date_format(col, z zz zzz zzzz)#x, date_format(col#x, z zz zzz zzzz, Some(America/Los_Angeles)) AS date_format(col, z zz zzz zzzz)#x]
+- SubqueryAlias v
+- View (`v`, [col#x])
+- Project [cast(col#x as timestamp) AS col#x]
@@ -269,9 +269,9 @@ Project [col#x, date_format(col#x, z zz zzz zzzz, Some(America/Los_Angeles)) AS
-- !query
-select col, date_format(col, 'X XX XXX') from v
+select col, date_format(col, 'X XX XXX'), to_char(col, 'X XX XXX'), to_varchar(col, 'X XX XXX') from v
-- !query analysis
-Project [col#x, date_format(col#x, X XX XXX, Some(America/Los_Angeles)) AS date_format(col, X XX XXX)#x]
+Project [col#x, date_format(col#x, X XX XXX, Some(America/Los_Angeles)) AS date_format(col, X XX XXX)#x, date_format(col#x, X XX XXX, Some(America/Los_Angeles)) AS date_format(col, X XX XXX)#x, date_format(col#x, X XX XXX, Some(America/Los_Angeles)) AS date_format(col, X XX XXX)#x]
+- SubqueryAlias v
+- View (`v`, [col#x])
+- Project [cast(col#x as timestamp) AS col#x]
@@ -281,9 +281,9 @@ Project [col#x, date_format(col#x, X XX XXX, Some(America/Los_Angeles)) AS date_
-- !query
-select col, date_format(col, 'XXXX XXXXX') from v
+select col, date_format(col, 'XXXX XXXXX'), to_char(col, 'XXXX XXXXX'), to_varchar(col, 'XXXX XXXXX') from v
-- !query analysis
-Project [col#x, date_format(col#x, XXXX XXXXX, Some(America/Los_Angeles)) AS date_format(col, XXXX XXXXX)#x]
+Project [col#x, date_format(col#x, XXXX XXXXX, Some(America/Los_Angeles)) AS date_format(col, XXXX XXXXX)#x, date_format(col#x, XXXX XXXXX, Some(America/Los_Angeles)) AS date_format(col, XXXX XXXXX)#x, date_format(col#x, XXXX XXXXX, Some(America/Los_Angeles)) AS date_format(col, XXXX XXXXX)#x]
+- SubqueryAlias v
+- View (`v`, [col#x])
+- Project [cast(col#x as timestamp) AS col#x]
@@ -293,9 +293,9 @@ Project [col#x, date_format(col#x, XXXX XXXXX, Some(America/Los_Angeles)) AS dat
-- !query
-select col, date_format(col, 'Z ZZ ZZZ ZZZZ ZZZZZ') from v
+select col, date_format(col, 'Z ZZ ZZZ ZZZZ ZZZZZ'), to_char(col, 'Z ZZ ZZZ ZZZZ ZZZZZ'), to_varchar(col, 'Z ZZ ZZZ ZZZZ ZZZZZ') from v
-- !query analysis
-Project [col#x, date_format(col#x, Z ZZ ZZZ ZZZZ ZZZZZ, Some(America/Los_Angeles)) AS date_format(col, Z ZZ ZZZ ZZZZ ZZZZZ)#x]
+Project [col#x, date_format(col#x, Z ZZ ZZZ ZZZZ ZZZZZ, Some(America/Los_Angeles)) AS date_format(col, Z ZZ ZZZ ZZZZ ZZZZZ)#x, date_format(col#x, Z ZZ ZZZ ZZZZ ZZZZZ, Some(America/Los_Angeles)) AS date_format(col, Z ZZ ZZZ ZZZZ ZZZZZ)#x, date_format(col#x, Z ZZ ZZZ ZZZZ ZZZZZ, Some(America/Los_Angeles)) AS date_format(col, Z ZZ ZZZ ZZZZ ZZZZZ)#x]
+- SubqueryAlias v
+- View (`v`, [col#x])
+- Project [cast(col#x as timestamp) AS col#x]
@@ -305,9 +305,9 @@ Project [col#x, date_format(col#x, Z ZZ ZZZ ZZZZ ZZZZZ, Some(America/Los_Angeles
-- !query
-select col, date_format(col, 'O OOOO') from v
+select col, date_format(col, 'O OOOO'), to_char(col, 'O OOOO'), to_varchar(col, 'O OOOO') from v
-- !query analysis
-Project [col#x, date_format(col#x, O OOOO, Some(America/Los_Angeles)) AS date_format(col, O OOOO)#x]
+Project [col#x, date_format(col#x, O OOOO, Some(America/Los_Angeles)) AS date_format(col, O OOOO)#x, date_format(col#x, O OOOO, Some(America/Los_Angeles)) AS date_format(col, O OOOO)#x, date_format(col#x, O OOOO, Some(America/Los_Angeles)) AS date_format(col, O OOOO)#x]
+- SubqueryAlias v
+- View (`v`, [col#x])
+- Project [cast(col#x as timestamp) AS col#x]
@@ -317,9 +317,9 @@ Project [col#x, date_format(col#x, O OOOO, Some(America/Los_Angeles)) AS date_fo
-- !query
-select col, date_format(col, 'x xx xxx xxxx xxxx xxxxx') from v
+select col, date_format(col, 'x xx xxx xxxx xxxx xxxxx'), to_char(col, 'x xx xxx xxxx xxxx xxxxx'), to_varchar(col, 'x xx xxx xxxx xxxx xxxxx') from v
-- !query analysis
-Project [col#x, date_format(col#x, x xx xxx xxxx xxxx xxxxx, Some(America/Los_Angeles)) AS date_format(col, x xx xxx xxxx xxxx xxxxx)#x]
+Project [col#x, date_format(col#x, x xx xxx xxxx xxxx xxxxx, Some(America/Los_Angeles)) AS date_format(col, x xx xxx xxxx xxxx xxxxx)#x, date_format(col#x, x xx xxx xxxx xxxx xxxxx, Some(America/Los_Angeles)) AS date_format(col, x xx xxx xxxx xxxx xxxxx)#x, date_format(col#x, x xx xxx xxxx xxxx xxxxx, Some(America/Los_Angeles)) AS date_format(col, x xx xxx xxxx xxxx xxxxx)#x]
+- SubqueryAlias v
+- View (`v`, [col#x])
+- Project [cast(col#x as timestamp) AS col#x]
@@ -329,9 +329,9 @@ Project [col#x, date_format(col#x, x xx xxx xxxx xxxx xxxxx, Some(America/Los_An
-- !query
-select col, date_format(col, '[yyyy-MM-dd HH:mm:ss]') from v
+select col, date_format(col, '[yyyy-MM-dd HH:mm:ss]'), to_char(col, '[yyyy-MM-dd HH:mm:ss]'), to_varchar(col, '[yyyy-MM-dd HH:mm:ss]') from v
-- !query analysis
-Project [col#x, date_format(col#x, [yyyy-MM-dd HH:mm:ss], Some(America/Los_Angeles)) AS date_format(col, [yyyy-MM-dd HH:mm:ss])#x]
+Project [col#x, date_format(col#x, [yyyy-MM-dd HH:mm:ss], Some(America/Los_Angeles)) AS date_format(col, [yyyy-MM-dd HH:mm:ss])#x, date_format(col#x, [yyyy-MM-dd HH:mm:ss], Some(America/Los_Angeles)) AS date_format(col, [yyyy-MM-dd HH:mm:ss])#x, date_format(col#x, [yyyy-MM-dd HH:mm:ss], Some(America/Los_Angeles)) AS date_format(col, [yyyy-MM-dd HH:mm:ss])#x]
+- SubqueryAlias v
+- View (`v`, [col#x])
+- Project [cast(col#x as timestamp) AS col#x]
@@ -341,9 +341,9 @@ Project [col#x, date_format(col#x, [yyyy-MM-dd HH:mm:ss], Some(America/Los_Angel
-- !query
-select col, date_format(col, "姚123'GyYqQMLwWuEFDdhHmsSaVzZxXOV'") from v
+select col, date_format(col, "姚123'GyYqQMLwWuEFDdhHmsSaVzZxXOV'"), to_char(col, "姚123'GyYqQMLwWuEFDdhHmsSaVzZxXOV'"), to_varchar(col, "姚123'GyYqQMLwWuEFDdhHmsSaVzZxXOV'") from v
-- !query analysis
-Project [col#x, date_format(col#x, 姚123'GyYqQMLwWuEFDdhHmsSaVzZxXOV', Some(America/Los_Angeles)) AS date_format(col, 姚123'GyYqQMLwWuEFDdhHmsSaVzZxXOV')#x]
+Project [col#x, date_format(col#x, 姚123'GyYqQMLwWuEFDdhHmsSaVzZxXOV', Some(America/Los_Angeles)) AS date_format(col, 姚123'GyYqQMLwWuEFDdhHmsSaVzZxXOV')#x, date_format(col#x, 姚123'GyYqQMLwWuEFDdhHmsSaVzZxXOV', Some(America/Los_Angeles)) AS date_format(col, 姚123'GyYqQMLwWuEFDdhHmsSaVzZxXOV')#x, date_format(col#x, 姚123'GyYqQMLwWuEFDdhHmsSaVzZxXOV', Some(America/Los_Angeles)) AS date_format(col, 姚123'GyYqQMLwWuEFDdhHmsSaVzZxXOV')#x]
+- SubqueryAlias v
+- View (`v`, [col#x])
+- Project [cast(col#x as timestamp) AS col#x]
@@ -353,9 +353,9 @@ Project [col#x, date_format(col#x, 姚123'GyYqQMLwWuEFDdhHmsSaVzZxXOV', Some(Ame
-- !query
-select col, date_format(col, "''") from v
+select col, date_format(col, "''"), to_char(col, "''"), to_varchar(col, "''") from v
-- !query analysis
-Project [col#x, date_format(col#x, '', Some(America/Los_Angeles)) AS date_format(col, '')#x]
+Project [col#x, date_format(col#x, '', Some(America/Los_Angeles)) AS date_format(col, '')#x, date_format(col#x, '', Some(America/Los_Angeles)) AS date_format(col, '')#x, date_format(col#x, '', Some(America/Los_Angeles)) AS date_format(col, '')#x]
+- SubqueryAlias v
+- View (`v`, [col#x])
+- Project [cast(col#x as timestamp) AS col#x]
@@ -365,12 +365,31 @@ Project [col#x, date_format(col#x, '', Some(America/Los_Angeles)) AS date_format
-- !query
-select col, date_format(col, '') from v
+select col, date_format(col, ''), to_char(col, ''), to_varchar(col, '') from v
-- !query analysis
-Project [col#x, date_format(col#x, , Some(America/Los_Angeles)) AS date_format(col, )#x]
+Project [col#x, date_format(col#x, , Some(America/Los_Angeles)) AS date_format(col, )#x, date_format(col#x, , Some(America/Los_Angeles)) AS date_format(col, )#x, date_format(col#x, , Some(America/Los_Angeles)) AS date_format(col, )#x]
+- SubqueryAlias v
+- View (`v`, [col#x])
+- Project [cast(col#x as timestamp) AS col#x]
+- Project [col#x]
+- SubqueryAlias t
+- LocalRelation [col#x]
+
+
+-- !query
+select date_format(date'2023-08-18', 'yyyy-MM-dd'), to_char(date'2023-08-18', 'yyyy-MM-dd'), to_varchar(date'2023-08-18', 'yyyy-MM-dd')
+-- !query analysis
+[Analyzer test output redacted due to nondeterminism]
+
+
+-- !query
+select date_format(timestamp_ltz'2023-08-18 09:13:14.123456Z', 'yyyy-MM-dd HH:mm:ss.SSSSSSZ'), to_char(timestamp_ltz'2023-08-18 09:13:14.123456Z', 'yyyy-MM-dd HH:mm:ss.SSSSSSZ'), to_varchar(timestamp_ltz'2023-08-18 09:13:14.123456Z', 'yyyy-MM-dd HH:mm:ss.SSSSSSZ')
+-- !query analysis
+[Analyzer test output redacted due to nondeterminism]
+
+
+-- !query
+select date_format(timestamp_ntz'2023-08-18 09:13:14.123456', 'yyyy-MM-dd HH:mm:ss.SSSSSS'), to_char(timestamp_ntz'2023-08-18 09:13:14.123456', 'yyyy-MM-dd HH:mm:ss.SSSSSS'), to_varchar(timestamp_ntz'2023-08-18 09:13:14.123456', 'yyyy-MM-dd HH:mm:ss.SSSSSS')
+-- !query analysis
+Project [date_format(cast(2023-08-18 09:13:14.123456 as timestamp), yyyy-MM-dd HH:mm:ss.SSSSSS, Some(America/Los_Angeles)) AS date_format(TIMESTAMP_NTZ '2023-08-18 09:13:14.123456', yyyy-MM-dd HH:mm:ss.SSSSSS)#x, date_format(cast(2023-08-18 09:13:14.123456 as timestamp), yyyy-MM-dd HH:mm:ss.SSSSSS, Some(America/Los_Angeles)) AS date_format(TIMESTAMP_NTZ '2023-08-18 09:13:14.123456', yyyy-MM-dd HH:mm:ss.SSSSSS)#x, date_format(cast(2023-08-18 09:13:14.123456 as timestamp), yyyy-MM-dd HH:mm:ss.SSSSSS, Some(America/Los_Angeles)) AS date_format(TIMESTAMP_NTZ '2023-08-18 09:13:14.123456', yyyy-MM-dd HH:mm:ss.SSSSSS)#x]
++- OneRowRelation
diff --git a/sql/core/src/test/resources/sql-tests/analyzer-results/datetime-formatting.sql.out b/sql/core/src/test/resources/sql-tests/analyzer-results/datetime-formatting.sql.out
index 376f00723355..bc33537b3a8e 100644
--- a/sql/core/src/test/resources/sql-tests/analyzer-results/datetime-formatting.sql.out
+++ b/sql/core/src/test/resources/sql-tests/analyzer-results/datetime-formatting.sql.out
@@ -23,9 +23,9 @@ CreateViewCommand `v`, select col from values
-- !query
-select col, date_format(col, 'G GG GGG GGGG') from v
+select col, date_format(col, 'G GG GGG GGGG'), to_char(col, 'G GG GGG GGGG'), to_varchar(col, 'G GG GGG GGGG') from v
-- !query analysis
-Project [col#x, date_format(col#x, G GG GGG GGGG, Some(America/Los_Angeles)) AS date_format(col, G GG GGG GGGG)#x]
+Project [col#x, date_format(col#x, G GG GGG GGGG, Some(America/Los_Angeles)) AS date_format(col, G GG GGG GGGG)#x, date_format(col#x, G GG GGG GGGG, Some(America/Los_Angeles)) AS date_format(col, G GG GGG GGGG)#x, date_format(col#x, G GG GGG GGGG, Some(America/Los_Angeles)) AS date_format(col, G GG GGG GGGG)#x]
+- SubqueryAlias v
+- View (`v`, [col#x])
+- Project [cast(col#x as timestamp) AS col#x]
@@ -35,9 +35,9 @@ Project [col#x, date_format(col#x, G GG GGG GGGG, Some(America/Los_Angeles)) AS
-- !query
-select col, date_format(col, 'y yy yyy yyyy yyyyy yyyyyy') from v
+select col, date_format(col, 'y yy yyy yyyy yyyyy yyyyyy'), to_char(col, 'y yy yyy yyyy yyyyy yyyyyy'), to_varchar(col, 'y yy yyy yyyy yyyyy yyyyyy') from v
-- !query analysis
-Project [col#x, date_format(col#x, y yy yyy yyyy yyyyy yyyyyy, Some(America/Los_Angeles)) AS date_format(col, y yy yyy yyyy yyyyy yyyyyy)#x]
+Project [col#x, date_format(col#x, y yy yyy yyyy yyyyy yyyyyy, Some(America/Los_Angeles)) AS date_format(col, y yy yyy yyyy yyyyy yyyyyy)#x, date_format(col#x, y yy yyy yyyy yyyyy yyyyyy, Some(America/Los_Angeles)) AS date_format(col, y yy yyy yyyy yyyyy yyyyyy)#x, date_format(col#x, y yy yyy yyyy yyyyy yyyyyy, Some(America/Los_Angeles)) AS date_format(col, y yy yyy yyyy yyyyy yyyyyy)#x]
+- SubqueryAlias v
+- View (`v`, [col#x])
+- Project [cast(col#x as timestamp) AS col#x]
@@ -47,9 +47,9 @@ Project [col#x, date_format(col#x, y yy yyy yyyy yyyyy yyyyyy, Some(America/Los_
-- !query
-select col, date_format(col, 'q qq') from v
+select col, date_format(col, 'q qq'), to_char(col, 'q qq'), to_varchar(col, 'q qq') from v
-- !query analysis
-Project [col#x, date_format(col#x, q qq, Some(America/Los_Angeles)) AS date_format(col, q qq)#x]
+Project [col#x, date_format(col#x, q qq, Some(America/Los_Angeles)) AS date_format(col, q qq)#x, date_format(col#x, q qq, Some(America/Los_Angeles)) AS date_format(col, q qq)#x, date_format(col#x, q qq, Some(America/Los_Angeles)) AS date_format(col, q qq)#x]
+- SubqueryAlias v
+- View (`v`, [col#x])
+- Project [cast(col#x as timestamp) AS col#x]
@@ -59,9 +59,9 @@ Project [col#x, date_format(col#x, q qq, Some(America/Los_Angeles)) AS date_form
-- !query
-select col, date_format(col, 'Q QQ QQQ QQQQ') from v
+select col, date_format(col, 'Q QQ QQQ QQQQ'), to_char(col, 'Q QQ QQQ QQQQ'), to_varchar(col, 'Q QQ QQQ QQQQ') from v
-- !query analysis
-Project [col#x, date_format(col#x, Q QQ QQQ QQQQ, Some(America/Los_Angeles)) AS date_format(col, Q QQ QQQ QQQQ)#x]
+Project [col#x, date_format(col#x, Q QQ QQQ QQQQ, Some(America/Los_Angeles)) AS date_format(col, Q QQ QQQ QQQQ)#x, date_format(col#x, Q QQ QQQ QQQQ, Some(America/Los_Angeles)) AS date_format(col, Q QQ QQQ QQQQ)#x, date_format(col#x, Q QQ QQQ QQQQ, Some(America/Los_Angeles)) AS date_format(col, Q QQ QQQ QQQQ)#x]
+- SubqueryAlias v
+- View (`v`, [col#x])
+- Project [cast(col#x as timestamp) AS col#x]
@@ -71,9 +71,9 @@ Project [col#x, date_format(col#x, Q QQ QQQ QQQQ, Some(America/Los_Angeles)) AS
-- !query
-select col, date_format(col, 'M MM MMM MMMM') from v
+select col, date_format(col, 'M MM MMM MMMM'), to_char(col, 'M MM MMM MMMM'), to_varchar(col, 'M MM MMM MMMM') from v
-- !query analysis
-Project [col#x, date_format(col#x, M MM MMM MMMM, Some(America/Los_Angeles)) AS date_format(col, M MM MMM MMMM)#x]
+Project [col#x, date_format(col#x, M MM MMM MMMM, Some(America/Los_Angeles)) AS date_format(col, M MM MMM MMMM)#x, date_format(col#x, M MM MMM MMMM, Some(America/Los_Angeles)) AS date_format(col, M MM MMM MMMM)#x, date_format(col#x, M MM MMM MMMM, Some(America/Los_Angeles)) AS date_format(col, M MM MMM MMMM)#x]
+- SubqueryAlias v
+- View (`v`, [col#x])
+- Project [cast(col#x as timestamp) AS col#x]
@@ -83,9 +83,9 @@ Project [col#x, date_format(col#x, M MM MMM MMMM, Some(America/Los_Angeles)) AS
-- !query
-select col, date_format(col, 'L LL') from v
+select col, date_format(col, 'L LL'), to_char(col, 'L LL'), to_varchar(col, 'L LL') from v
-- !query analysis
-Project [col#x, date_format(col#x, L LL, Some(America/Los_Angeles)) AS date_format(col, L LL)#x]
+Project [col#x, date_format(col#x, L LL, Some(America/Los_Angeles)) AS date_format(col, L LL)#x, date_format(col#x, L LL, Some(America/Los_Angeles)) AS date_format(col, L LL)#x, date_format(col#x, L LL, Some(America/Los_Angeles)) AS date_format(col, L LL)#x]
+- SubqueryAlias v
+- View (`v`, [col#x])
+- Project [cast(col#x as timestamp) AS col#x]
@@ -95,9 +95,9 @@ Project [col#x, date_format(col#x, L LL, Some(America/Los_Angeles)) AS date_form
-- !query
-select col, date_format(col, 'E EE EEE EEEE') from v
+select col, date_format(col, 'E EE EEE EEEE'), to_char(col, 'E EE EEE EEEE'), to_varchar(col, 'E EE EEE EEEE') from v
-- !query analysis
-Project [col#x, date_format(col#x, E EE EEE EEEE, Some(America/Los_Angeles)) AS date_format(col, E EE EEE EEEE)#x]
+Project [col#x, date_format(col#x, E EE EEE EEEE, Some(America/Los_Angeles)) AS date_format(col, E EE EEE EEEE)#x, date_format(col#x, E EE EEE EEEE, Some(America/Los_Angeles)) AS date_format(col, E EE EEE EEEE)#x, date_format(col#x, E EE EEE EEEE, Some(America/Los_Angeles)) AS date_format(col, E EE EEE EEEE)#x]
+- SubqueryAlias v
+- View (`v`, [col#x])
+- Project [cast(col#x as timestamp) AS col#x]
@@ -107,9 +107,9 @@ Project [col#x, date_format(col#x, E EE EEE EEEE, Some(America/Los_Angeles)) AS
-- !query
-select col, date_format(col, 'F') from v
+select col, date_format(col, 'F'), to_char(col, 'F'), to_varchar(col, 'F') from v
-- !query analysis
-Project [col#x, date_format(col#x, F, Some(America/Los_Angeles)) AS date_format(col, F)#x]
+Project [col#x, date_format(col#x, F, Some(America/Los_Angeles)) AS date_format(col, F)#x, date_format(col#x, F, Some(America/Los_Angeles)) AS date_format(col, F)#x, date_format(col#x, F, Some(America/Los_Angeles)) AS date_format(col, F)#x]
+- SubqueryAlias v
+- View (`v`, [col#x])
+- Project [cast(col#x as timestamp) AS col#x]
@@ -119,9 +119,9 @@ Project [col#x, date_format(col#x, F, Some(America/Los_Angeles)) AS date_format(
-- !query
-select col, date_format(col, 'd dd') from v
+select col, date_format(col, 'd dd'), to_char(col, 'd dd'), to_varchar(col, 'd dd') from v
-- !query analysis
-Project [col#x, date_format(col#x, d dd, Some(America/Los_Angeles)) AS date_format(col, d dd)#x]
+Project [col#x, date_format(col#x, d dd, Some(America/Los_Angeles)) AS date_format(col, d dd)#x, date_format(col#x, d dd, Some(America/Los_Angeles)) AS date_format(col, d dd)#x, date_format(col#x, d dd, Some(America/Los_Angeles)) AS date_format(col, d dd)#x]
+- SubqueryAlias v
+- View (`v`, [col#x])
+- Project [cast(col#x as timestamp) AS col#x]
@@ -131,15 +131,15 @@ Project [col#x, date_format(col#x, d dd, Some(America/Los_Angeles)) AS date_form
-- !query
-select col, date_format(col, 'DD') from v where col = timestamp '2100-01-01 01:33:33.123America/Los_Angeles'
+select col, date_format(col, 'DD'), to_char(col, 'DD'), to_varchar(col, 'DD') from v where col = timestamp '2100-01-01 01:33:33.123America/Los_Angeles'
-- !query analysis
[Analyzer test output redacted due to nondeterminism]
-- !query
-select col, date_format(col, 'D DDD') from v
+select col, date_format(col, 'D DDD'), to_char(col, 'D DDD'), to_varchar(col, 'D DDD') from v
-- !query analysis
-Project [col#x, date_format(col#x, D DDD, Some(America/Los_Angeles)) AS date_format(col, D DDD)#x]
+Project [col#x, date_format(col#x, D DDD, Some(America/Los_Angeles)) AS date_format(col, D DDD)#x, date_format(col#x, D DDD, Some(America/Los_Angeles)) AS date_format(col, D DDD)#x, date_format(col#x, D DDD, Some(America/Los_Angeles)) AS date_format(col, D DDD)#x]
+- SubqueryAlias v
+- View (`v`, [col#x])
+- Project [cast(col#x as timestamp) AS col#x]
@@ -149,9 +149,9 @@ Project [col#x, date_format(col#x, D DDD, Some(America/Los_Angeles)) AS date_for
-- !query
-select col, date_format(col, 'H HH') from v
+select col, date_format(col, 'H HH'), to_char(col, 'H HH'), to_varchar(col, 'H HH') from v
-- !query analysis
-Project [col#x, date_format(col#x, H HH, Some(America/Los_Angeles)) AS date_format(col, H HH)#x]
+Project [col#x, date_format(col#x, H HH, Some(America/Los_Angeles)) AS date_format(col, H HH)#x, date_format(col#x, H HH, Some(America/Los_Angeles)) AS date_format(col, H HH)#x, date_format(col#x, H HH, Some(America/Los_Angeles)) AS date_format(col, H HH)#x]
+- SubqueryAlias v
+- View (`v`, [col#x])
+- Project [cast(col#x as timestamp) AS col#x]
@@ -161,9 +161,9 @@ Project [col#x, date_format(col#x, H HH, Some(America/Los_Angeles)) AS date_form
-- !query
-select col, date_format(col, 'h hh') from v
+select col, date_format(col, 'h hh'), to_char(col, 'h hh'), to_varchar(col, 'h hh') from v
-- !query analysis
-Project [col#x, date_format(col#x, h hh, Some(America/Los_Angeles)) AS date_format(col, h hh)#x]
+Project [col#x, date_format(col#x, h hh, Some(America/Los_Angeles)) AS date_format(col, h hh)#x, date_format(col#x, h hh, Some(America/Los_Angeles)) AS date_format(col, h hh)#x, date_format(col#x, h hh, Some(America/Los_Angeles)) AS date_format(col, h hh)#x]
+- SubqueryAlias v
+- View (`v`, [col#x])
+- Project [cast(col#x as timestamp) AS col#x]
@@ -173,9 +173,9 @@ Project [col#x, date_format(col#x, h hh, Some(America/Los_Angeles)) AS date_form
-- !query
-select col, date_format(col, 'k kk') from v
+select col, date_format(col, 'k kk'), to_char(col, 'k kk'), to_varchar(col, 'k kk') from v
-- !query analysis
-Project [col#x, date_format(col#x, k kk, Some(America/Los_Angeles)) AS date_format(col, k kk)#x]
+Project [col#x, date_format(col#x, k kk, Some(America/Los_Angeles)) AS date_format(col, k kk)#x, date_format(col#x, k kk, Some(America/Los_Angeles)) AS date_format(col, k kk)#x, date_format(col#x, k kk, Some(America/Los_Angeles)) AS date_format(col, k kk)#x]
+- SubqueryAlias v
+- View (`v`, [col#x])
+- Project [cast(col#x as timestamp) AS col#x]
@@ -185,9 +185,9 @@ Project [col#x, date_format(col#x, k kk, Some(America/Los_Angeles)) AS date_form
-- !query
-select col, date_format(col, 'K KK') from v
+select col, date_format(col, 'K KK'), to_char(col, 'K KK'), to_varchar(col, 'K KK') from v
-- !query analysis
-Project [col#x, date_format(col#x, K KK, Some(America/Los_Angeles)) AS date_format(col, K KK)#x]
+Project [col#x, date_format(col#x, K KK, Some(America/Los_Angeles)) AS date_format(col, K KK)#x, date_format(col#x, K KK, Some(America/Los_Angeles)) AS date_format(col, K KK)#x, date_format(col#x, K KK, Some(America/Los_Angeles)) AS date_format(col, K KK)#x]
+- SubqueryAlias v
+- View (`v`, [col#x])
+- Project [cast(col#x as timestamp) AS col#x]
@@ -197,9 +197,9 @@ Project [col#x, date_format(col#x, K KK, Some(America/Los_Angeles)) AS date_form
-- !query
-select col, date_format(col, 'm mm') from v
+select col, date_format(col, 'm mm'), to_char(col, 'm mm'), to_varchar(col, 'm mm') from v
-- !query analysis
-Project [col#x, date_format(col#x, m mm, Some(America/Los_Angeles)) AS date_format(col, m mm)#x]
+Project [col#x, date_format(col#x, m mm, Some(America/Los_Angeles)) AS date_format(col, m mm)#x, date_format(col#x, m mm, Some(America/Los_Angeles)) AS date_format(col, m mm)#x, date_format(col#x, m mm, Some(America/Los_Angeles)) AS date_format(col, m mm)#x]
+- SubqueryAlias v
+- View (`v`, [col#x])
+- Project [cast(col#x as timestamp) AS col#x]
@@ -209,9 +209,9 @@ Project [col#x, date_format(col#x, m mm, Some(America/Los_Angeles)) AS date_form
-- !query
-select col, date_format(col, 's ss') from v
+select col, date_format(col, 's ss'), to_char(col, 's ss'), to_varchar(col, 's ss') from v
-- !query analysis
-Project [col#x, date_format(col#x, s ss, Some(America/Los_Angeles)) AS date_format(col, s ss)#x]
+Project [col#x, date_format(col#x, s ss, Some(America/Los_Angeles)) AS date_format(col, s ss)#x, date_format(col#x, s ss, Some(America/Los_Angeles)) AS date_format(col, s ss)#x, date_format(col#x, s ss, Some(America/Los_Angeles)) AS date_format(col, s ss)#x]
+- SubqueryAlias v
+- View (`v`, [col#x])
+- Project [cast(col#x as timestamp) AS col#x]
@@ -221,9 +221,9 @@ Project [col#x, date_format(col#x, s ss, Some(America/Los_Angeles)) AS date_form
-- !query
-select col, date_format(col, 'S SS SSS SSSS SSSSS SSSSSS SSSSSSS SSSSSSSS SSSSSSSSS') from v
+select col, date_format(col, 'S SS SSS SSSS SSSSS SSSSSS SSSSSSS SSSSSSSS SSSSSSSSS'), to_char(col, 'S SS SSS SSSS SSSSS SSSSSS SSSSSSS SSSSSSSS SSSSSSSSS'), to_varchar(col, 'S SS SSS SSSS SSSSS SSSSSS SSSSSSS SSSSSSSS SSSSSSSSS') from v
-- !query analysis
-Project [col#x, date_format(col#x, S SS SSS SSSS SSSSS SSSSSS SSSSSSS SSSSSSSS SSSSSSSSS, Some(America/Los_Angeles)) AS date_format(col, S SS SSS SSSS SSSSS SSSSSS SSSSSSS SSSSSSSS SSSSSSSSS)#x]
+Project [col#x, date_format(col#x, S SS SSS SSSS SSSSS SSSSSS SSSSSSS SSSSSSSS SSSSSSSSS, Some(America/Los_Angeles)) AS date_format(col, S SS SSS SSSS SSSSS SSSSSS SSSSSSS SSSSSSSS SSSSSSSSS)#x, date_format(col#x, S SS SSS SSSS SSSSS SSSSSS SSSSSSS SSSSSSSS SSSSSSSSS, Some(America/Los_Angeles)) AS date_format(col, S SS SSS SSSS SSSSS SSSSSS SSSSSSS SSSSSSSS SSSSSSSSS)#x, date_format(col#x, S SS SSS SSSS SSSSS SSSSSS SSSSSSS SSSSSSSS SSSSSSSSS, Some(America/Los_Angeles)) AS date_format(col, S SS SSS SSSS SSSSS SSSSSS SSSSSSS SSSSSSSS SSSSSSSSS)#x]
+- SubqueryAlias v
+- View (`v`, [col#x])
+- Project [cast(col#x as timestamp) AS col#x]
@@ -233,9 +233,9 @@ Project [col#x, date_format(col#x, S SS SSS SSSS SSSSS SSSSSS SSSSSSS SSSSSSSS S
-- !query
-select col, date_format(col, 'a') from v
+select col, date_format(col, 'a'), to_char(col, 'a'), to_varchar(col, 'a') from v
-- !query analysis
-Project [col#x, date_format(col#x, a, Some(America/Los_Angeles)) AS date_format(col, a)#x]
+Project [col#x, date_format(col#x, a, Some(America/Los_Angeles)) AS date_format(col, a)#x, date_format(col#x, a, Some(America/Los_Angeles)) AS date_format(col, a)#x, date_format(col#x, a, Some(America/Los_Angeles)) AS date_format(col, a)#x]
+- SubqueryAlias v
+- View (`v`, [col#x])
+- Project [cast(col#x as timestamp) AS col#x]
@@ -245,9 +245,9 @@ Project [col#x, date_format(col#x, a, Some(America/Los_Angeles)) AS date_format(
-- !query
-select col, date_format(col, 'VV') from v
+select col, date_format(col, 'VV'), to_char(col, 'VV'), to_varchar(col, 'VV') from v
-- !query analysis
-Project [col#x, date_format(col#x, VV, Some(America/Los_Angeles)) AS date_format(col, VV)#x]
+Project [col#x, date_format(col#x, VV, Some(America/Los_Angeles)) AS date_format(col, VV)#x, date_format(col#x, VV, Some(America/Los_Angeles)) AS date_format(col, VV)#x, date_format(col#x, VV, Some(America/Los_Angeles)) AS date_format(col, VV)#x]
+- SubqueryAlias v
+- View (`v`, [col#x])
+- Project [cast(col#x as timestamp) AS col#x]
@@ -257,9 +257,9 @@ Project [col#x, date_format(col#x, VV, Some(America/Los_Angeles)) AS date_format
-- !query
-select col, date_format(col, 'z zz zzz zzzz') from v
+select col, date_format(col, 'z zz zzz zzzz'), to_char(col, 'z zz zzz zzzz'), to_varchar(col, 'z zz zzz zzzz') from v
-- !query analysis
-Project [col#x, date_format(col#x, z zz zzz zzzz, Some(America/Los_Angeles)) AS date_format(col, z zz zzz zzzz)#x]
+Project [col#x, date_format(col#x, z zz zzz zzzz, Some(America/Los_Angeles)) AS date_format(col, z zz zzz zzzz)#x, date_format(col#x, z zz zzz zzzz, Some(America/Los_Angeles)) AS date_format(col, z zz zzz zzzz)#x, date_format(col#x, z zz zzz zzzz, Some(America/Los_Angeles)) AS date_format(col, z zz zzz zzzz)#x]
+- SubqueryAlias v
+- View (`v`, [col#x])
+- Project [cast(col#x as timestamp) AS col#x]
@@ -269,9 +269,9 @@ Project [col#x, date_format(col#x, z zz zzz zzzz, Some(America/Los_Angeles)) AS
-- !query
-select col, date_format(col, 'X XX XXX') from v
+select col, date_format(col, 'X XX XXX'), to_char(col, 'X XX XXX'), to_varchar(col, 'X XX XXX') from v
-- !query analysis
-Project [col#x, date_format(col#x, X XX XXX, Some(America/Los_Angeles)) AS date_format(col, X XX XXX)#x]
+Project [col#x, date_format(col#x, X XX XXX, Some(America/Los_Angeles)) AS date_format(col, X XX XXX)#x, date_format(col#x, X XX XXX, Some(America/Los_Angeles)) AS date_format(col, X XX XXX)#x, date_format(col#x, X XX XXX, Some(America/Los_Angeles)) AS date_format(col, X XX XXX)#x]
+- SubqueryAlias v
+- View (`v`, [col#x])
+- Project [cast(col#x as timestamp) AS col#x]
@@ -281,9 +281,9 @@ Project [col#x, date_format(col#x, X XX XXX, Some(America/Los_Angeles)) AS date_
-- !query
-select col, date_format(col, 'XXXX XXXXX') from v
+select col, date_format(col, 'XXXX XXXXX'), to_char(col, 'XXXX XXXXX'), to_varchar(col, 'XXXX XXXXX') from v
-- !query analysis
-Project [col#x, date_format(col#x, XXXX XXXXX, Some(America/Los_Angeles)) AS date_format(col, XXXX XXXXX)#x]
+Project [col#x, date_format(col#x, XXXX XXXXX, Some(America/Los_Angeles)) AS date_format(col, XXXX XXXXX)#x, date_format(col#x, XXXX XXXXX, Some(America/Los_Angeles)) AS date_format(col, XXXX XXXXX)#x, date_format(col#x, XXXX XXXXX, Some(America/Los_Angeles)) AS date_format(col, XXXX XXXXX)#x]
+- SubqueryAlias v
+- View (`v`, [col#x])
+- Project [cast(col#x as timestamp) AS col#x]
@@ -293,9 +293,9 @@ Project [col#x, date_format(col#x, XXXX XXXXX, Some(America/Los_Angeles)) AS dat
-- !query
-select col, date_format(col, 'Z ZZ ZZZ ZZZZ ZZZZZ') from v
+select col, date_format(col, 'Z ZZ ZZZ ZZZZ ZZZZZ'), to_char(col, 'Z ZZ ZZZ ZZZZ ZZZZZ'), to_varchar(col, 'Z ZZ ZZZ ZZZZ ZZZZZ') from v
-- !query analysis
-Project [col#x, date_format(col#x, Z ZZ ZZZ ZZZZ ZZZZZ, Some(America/Los_Angeles)) AS date_format(col, Z ZZ ZZZ ZZZZ ZZZZZ)#x]
+Project [col#x, date_format(col#x, Z ZZ ZZZ ZZZZ ZZZZZ, Some(America/Los_Angeles)) AS date_format(col, Z ZZ ZZZ ZZZZ ZZZZZ)#x, date_format(col#x, Z ZZ ZZZ ZZZZ ZZZZZ, Some(America/Los_Angeles)) AS date_format(col, Z ZZ ZZZ ZZZZ ZZZZZ)#x, date_format(col#x, Z ZZ ZZZ ZZZZ ZZZZZ, Some(America/Los_Angeles)) AS date_format(col, Z ZZ ZZZ ZZZZ ZZZZZ)#x]
+- SubqueryAlias v
+- View (`v`, [col#x])
+- Project [cast(col#x as timestamp) AS col#x]
@@ -305,9 +305,9 @@ Project [col#x, date_format(col#x, Z ZZ ZZZ ZZZZ ZZZZZ, Some(America/Los_Angeles
-- !query
-select col, date_format(col, 'O OOOO') from v
+select col, date_format(col, 'O OOOO'), to_char(col, 'O OOOO'), to_varchar(col, 'O OOOO') from v
-- !query analysis
-Project [col#x, date_format(col#x, O OOOO, Some(America/Los_Angeles)) AS date_format(col, O OOOO)#x]
+Project [col#x, date_format(col#x, O OOOO, Some(America/Los_Angeles)) AS date_format(col, O OOOO)#x, date_format(col#x, O OOOO, Some(America/Los_Angeles)) AS date_format(col, O OOOO)#x, date_format(col#x, O OOOO, Some(America/Los_Angeles)) AS date_format(col, O OOOO)#x]
+- SubqueryAlias v
+- View (`v`, [col#x])
+- Project [cast(col#x as timestamp) AS col#x]
@@ -317,9 +317,9 @@ Project [col#x, date_format(col#x, O OOOO, Some(America/Los_Angeles)) AS date_fo
-- !query
-select col, date_format(col, 'x xx xxx xxxx xxxx xxxxx') from v
+select col, date_format(col, 'x xx xxx xxxx xxxx xxxxx'), to_char(col, 'x xx xxx xxxx xxxx xxxxx'), to_varchar(col, 'x xx xxx xxxx xxxx xxxxx') from v
-- !query analysis
-Project [col#x, date_format(col#x, x xx xxx xxxx xxxx xxxxx, Some(America/Los_Angeles)) AS date_format(col, x xx xxx xxxx xxxx xxxxx)#x]
+Project [col#x, date_format(col#x, x xx xxx xxxx xxxx xxxxx, Some(America/Los_Angeles)) AS date_format(col, x xx xxx xxxx xxxx xxxxx)#x, date_format(col#x, x xx xxx xxxx xxxx xxxxx, Some(America/Los_Angeles)) AS date_format(col, x xx xxx xxxx xxxx xxxxx)#x, date_format(col#x, x xx xxx xxxx xxxx xxxxx, Some(America/Los_Angeles)) AS date_format(col, x xx xxx xxxx xxxx xxxxx)#x]
+- SubqueryAlias v
+- View (`v`, [col#x])
+- Project [cast(col#x as timestamp) AS col#x]
@@ -329,9 +329,9 @@ Project [col#x, date_format(col#x, x xx xxx xxxx xxxx xxxxx, Some(America/Los_An
-- !query
-select col, date_format(col, '[yyyy-MM-dd HH:mm:ss]') from v
+select col, date_format(col, '[yyyy-MM-dd HH:mm:ss]'), to_char(col, '[yyyy-MM-dd HH:mm:ss]'), to_varchar(col, '[yyyy-MM-dd HH:mm:ss]') from v
-- !query analysis
-Project [col#x, date_format(col#x, [yyyy-MM-dd HH:mm:ss], Some(America/Los_Angeles)) AS date_format(col, [yyyy-MM-dd HH:mm:ss])#x]
+Project [col#x, date_format(col#x, [yyyy-MM-dd HH:mm:ss], Some(America/Los_Angeles)) AS date_format(col, [yyyy-MM-dd HH:mm:ss])#x, date_format(col#x, [yyyy-MM-dd HH:mm:ss], Some(America/Los_Angeles)) AS date_format(col, [yyyy-MM-dd HH:mm:ss])#x, date_format(col#x, [yyyy-MM-dd HH:mm:ss], Some(America/Los_Angeles)) AS date_format(col, [yyyy-MM-dd HH:mm:ss])#x]
+- SubqueryAlias v
+- View (`v`, [col#x])
+- Project [cast(col#x as timestamp) AS col#x]
@@ -341,9 +341,9 @@ Project [col#x, date_format(col#x, [yyyy-MM-dd HH:mm:ss], Some(America/Los_Angel
-- !query
-select col, date_format(col, "姚123'GyYqQMLwWuEFDdhHmsSaVzZxXOV'") from v
+select col, date_format(col, "姚123'GyYqQMLwWuEFDdhHmsSaVzZxXOV'"), to_char(col, "姚123'GyYqQMLwWuEFDdhHmsSaVzZxXOV'"), to_varchar(col, "姚123'GyYqQMLwWuEFDdhHmsSaVzZxXOV'") from v
-- !query analysis
-Project [col#x, date_format(col#x, 姚123'GyYqQMLwWuEFDdhHmsSaVzZxXOV', Some(America/Los_Angeles)) AS date_format(col, 姚123'GyYqQMLwWuEFDdhHmsSaVzZxXOV')#x]
+Project [col#x, date_format(col#x, 姚123'GyYqQMLwWuEFDdhHmsSaVzZxXOV', Some(America/Los_Angeles)) AS date_format(col, 姚123'GyYqQMLwWuEFDdhHmsSaVzZxXOV')#x, date_format(col#x, 姚123'GyYqQMLwWuEFDdhHmsSaVzZxXOV', Some(America/Los_Angeles)) AS date_format(col, 姚123'GyYqQMLwWuEFDdhHmsSaVzZxXOV')#x, date_format(col#x, 姚123'GyYqQMLwWuEFDdhHmsSaVzZxXOV', Some(America/Los_Angeles)) AS date_format(col, 姚123'GyYqQMLwWuEFDdhHmsSaVzZxXOV')#x]
+- SubqueryAlias v
+- View (`v`, [col#x])
+- Project [cast(col#x as timestamp) AS col#x]
@@ -353,9 +353,9 @@ Project [col#x, date_format(col#x, 姚123'GyYqQMLwWuEFDdhHmsSaVzZxXOV', Some(Ame
-- !query
-select col, date_format(col, "''") from v
+select col, date_format(col, "''"), to_char(col, "''"), to_varchar(col, "''") from v
-- !query analysis
-Project [col#x, date_format(col#x, '', Some(America/Los_Angeles)) AS date_format(col, '')#x]
+Project [col#x, date_format(col#x, '', Some(America/Los_Angeles)) AS date_format(col, '')#x, date_format(col#x, '', Some(America/Los_Angeles)) AS date_format(col, '')#x, date_format(col#x, '', Some(America/Los_Angeles)) AS date_format(col, '')#x]
+- SubqueryAlias v
+- View (`v`, [col#x])
+- Project [cast(col#x as timestamp) AS col#x]
@@ -365,12 +365,31 @@ Project [col#x, date_format(col#x, '', Some(America/Los_Angeles)) AS date_format
-- !query
-select col, date_format(col, '') from v
+select col, date_format(col, ''), to_char(col, ''), to_varchar(col, '') from v
-- !query analysis
-Project [col#x, date_format(col#x, , Some(America/Los_Angeles)) AS date_format(col, )#x]
+Project [col#x, date_format(col#x, , Some(America/Los_Angeles)) AS date_format(col, )#x, date_format(col#x, , Some(America/Los_Angeles)) AS date_format(col, )#x, date_format(col#x, , Some(America/Los_Angeles)) AS date_format(col, )#x]
+- SubqueryAlias v
+- View (`v`, [col#x])
+- Project [cast(col#x as timestamp) AS col#x]
+- Project [col#x]
+- SubqueryAlias t
+- LocalRelation [col#x]
+
+
+-- !query
+select date_format(date'2023-08-18', 'yyyy-MM-dd'), to_char(date'2023-08-18', 'yyyy-MM-dd'), to_varchar(date'2023-08-18', 'yyyy-MM-dd')
+-- !query analysis
+[Analyzer test output redacted due to nondeterminism]
+
+
+-- !query
+select date_format(timestamp_ltz'2023-08-18 09:13:14.123456Z', 'yyyy-MM-dd HH:mm:ss.SSSSSSZ'), to_char(timestamp_ltz'2023-08-18 09:13:14.123456Z', 'yyyy-MM-dd HH:mm:ss.SSSSSSZ'), to_varchar(timestamp_ltz'2023-08-18 09:13:14.123456Z', 'yyyy-MM-dd HH:mm:ss.SSSSSSZ')
+-- !query analysis
+[Analyzer test output redacted due to nondeterminism]
+
+
+-- !query
+select date_format(timestamp_ntz'2023-08-18 09:13:14.123456', 'yyyy-MM-dd HH:mm:ss.SSSSSS'), to_char(timestamp_ntz'2023-08-18 09:13:14.123456', 'yyyy-MM-dd HH:mm:ss.SSSSSS'), to_varchar(timestamp_ntz'2023-08-18 09:13:14.123456', 'yyyy-MM-dd HH:mm:ss.SSSSSS')
+-- !query analysis
+Project [date_format(cast(2023-08-18 09:13:14.123456 as timestamp), yyyy-MM-dd HH:mm:ss.SSSSSS, Some(America/Los_Angeles)) AS date_format(TIMESTAMP_NTZ '2023-08-18 09:13:14.123456', yyyy-MM-dd HH:mm:ss.SSSSSS)#x, date_format(cast(2023-08-18 09:13:14.123456 as timestamp), yyyy-MM-dd HH:mm:ss.SSSSSS, Some(America/Los_Angeles)) AS date_format(TIMESTAMP_NTZ '2023-08-18 09:13:14.123456', yyyy-MM-dd HH:mm:ss.SSSSSS)#x, date_format(cast(2023-08-18 09:13:14.123456 as timestamp), yyyy-MM-dd HH:mm:ss.SSSSSS, Some(America/Los_Angeles)) AS date_format(TIMESTAMP_NTZ '2023-08-18 09:13:14.123456', yyyy-MM-dd HH:mm:ss.SSSSSS)#x]
++- OneRowRelation
diff --git a/sql/core/src/test/resources/sql-tests/inputs/datetime-formatting.sql b/sql/core/src/test/resources/sql-tests/inputs/datetime-formatting.sql
index 2d70326f4f3c..3618bb5c399f 100644
--- a/sql/core/src/test/resources/sql-tests/inputs/datetime-formatting.sql
+++ b/sql/core/src/test/resources/sql-tests/inputs/datetime-formatting.sql
@@ -9,60 +9,65 @@ create temporary view v as select col from values
(timestamp '2020-01-01 01:33:33.123Asia/Shanghai'),
(timestamp '2100-01-01 01:33:33.123America/Los_Angeles') t(col);
-select col, date_format(col, 'G GG GGG GGGG') from v;
+select col, date_format(col, 'G GG GGG GGGG'), to_char(col, 'G GG GGG GGGG'), to_varchar(col, 'G GG GGG GGGG') from v;
-select col, date_format(col, 'y yy yyy yyyy yyyyy yyyyyy') from v;
+select col, date_format(col, 'y yy yyy yyyy yyyyy yyyyyy'), to_char(col, 'y yy yyy yyyy yyyyy yyyyyy'), to_varchar(col, 'y yy yyy yyyy yyyyy yyyyyy') from v;
-select col, date_format(col, 'q qq') from v;
+select col, date_format(col, 'q qq'), to_char(col, 'q qq'), to_varchar(col, 'q qq') from v;
-select col, date_format(col, 'Q QQ QQQ QQQQ') from v;
+select col, date_format(col, 'Q QQ QQQ QQQQ'), to_char(col, 'Q QQ QQQ QQQQ'), to_varchar(col, 'Q QQ QQQ QQQQ') from v;
-select col, date_format(col, 'M MM MMM MMMM') from v;
+select col, date_format(col, 'M MM MMM MMMM'), to_char(col, 'M MM MMM MMMM'), to_varchar(col, 'M MM MMM MMMM') from v;
-select col, date_format(col, 'L LL') from v;
+select col, date_format(col, 'L LL'), to_char(col, 'L LL'), to_varchar(col, 'L LL') from v;
-select col, date_format(col, 'E EE EEE EEEE') from v;
+select col, date_format(col, 'E EE EEE EEEE'), to_char(col, 'E EE EEE EEEE'), to_varchar(col, 'E EE EEE EEEE') from v;
-select col, date_format(col, 'F') from v;
+select col, date_format(col, 'F'), to_char(col, 'F'), to_varchar(col, 'F') from v;
-select col, date_format(col, 'd dd') from v;
+select col, date_format(col, 'd dd'), to_char(col, 'd dd'), to_varchar(col, 'd dd') from v;
-select col, date_format(col, 'DD') from v where col = timestamp '2100-01-01 01:33:33.123America/Los_Angeles';
-select col, date_format(col, 'D DDD') from v;
+select col, date_format(col, 'DD'), to_char(col, 'DD'), to_varchar(col, 'DD') from v where col = timestamp '2100-01-01 01:33:33.123America/Los_Angeles';
+select col, date_format(col, 'D DDD'), to_char(col, 'D DDD'), to_varchar(col, 'D DDD') from v;
-select col, date_format(col, 'H HH') from v;
+select col, date_format(col, 'H HH'), to_char(col, 'H HH'), to_varchar(col, 'H HH') from v;
-select col, date_format(col, 'h hh') from v;
+select col, date_format(col, 'h hh'), to_char(col, 'h hh'), to_varchar(col, 'h hh') from v;
-select col, date_format(col, 'k kk') from v;
+select col, date_format(col, 'k kk'), to_char(col, 'k kk'), to_varchar(col, 'k kk') from v;
-select col, date_format(col, 'K KK') from v;
+select col, date_format(col, 'K KK'), to_char(col, 'K KK'), to_varchar(col, 'K KK') from v;
-select col, date_format(col, 'm mm') from v;
+select col, date_format(col, 'm mm'), to_char(col, 'm mm'), to_varchar(col, 'm mm') from v;
-select col, date_format(col, 's ss') from v;
+select col, date_format(col, 's ss'), to_char(col, 's ss'), to_varchar(col, 's ss') from v;
-select col, date_format(col, 'S SS SSS SSSS SSSSS SSSSSS SSSSSSS SSSSSSSS SSSSSSSSS') from v;
+select col, date_format(col, 'S SS SSS SSSS SSSSS SSSSSS SSSSSSS SSSSSSSS SSSSSSSSS'), to_char(col, 'S SS SSS SSSS SSSSS SSSSSS SSSSSSS SSSSSSSS SSSSSSSSS'), to_varchar(col, 'S SS SSS SSSS SSSSS SSSSSS SSSSSSS SSSSSSSS SSSSSSSSS') from v;
-select col, date_format(col, 'a') from v;
+select col, date_format(col, 'a'), to_char(col, 'a'), to_varchar(col, 'a') from v;
-select col, date_format(col, 'VV') from v;
+select col, date_format(col, 'VV'), to_char(col, 'VV'), to_varchar(col, 'VV') from v;
-select col, date_format(col, 'z zz zzz zzzz') from v;
+select col, date_format(col, 'z zz zzz zzzz'), to_char(col, 'z zz zzz zzzz'), to_varchar(col, 'z zz zzz zzzz') from v;
-select col, date_format(col, 'X XX XXX') from v;
-select col, date_format(col, 'XXXX XXXXX') from v;
+select col, date_format(col, 'X XX XXX'), to_char(col, 'X XX XXX'), to_varchar(col, 'X XX XXX') from v;
+select col, date_format(col, 'XXXX XXXXX'), to_char(col, 'XXXX XXXXX'), to_varchar(col, 'XXXX XXXXX') from v;
-select col, date_format(col, 'Z ZZ ZZZ ZZZZ ZZZZZ') from v;
+select col, date_format(col, 'Z ZZ ZZZ ZZZZ ZZZZZ'), to_char(col, 'Z ZZ ZZZ ZZZZ ZZZZZ'), to_varchar(col, 'Z ZZ ZZZ ZZZZ ZZZZZ') from v;
-select col, date_format(col, 'O OOOO') from v;
+select col, date_format(col, 'O OOOO'), to_char(col, 'O OOOO'), to_varchar(col, 'O OOOO') from v;
-select col, date_format(col, 'x xx xxx xxxx xxxx xxxxx') from v;
+select col, date_format(col, 'x xx xxx xxxx xxxx xxxxx'), to_char(col, 'x xx xxx xxxx xxxx xxxxx'), to_varchar(col, 'x xx xxx xxxx xxxx xxxxx') from v;
-- optional pattern, but the results won't be optional for formatting
-select col, date_format(col, '[yyyy-MM-dd HH:mm:ss]') from v;
+select col, date_format(col, '[yyyy-MM-dd HH:mm:ss]'), to_char(col, '[yyyy-MM-dd HH:mm:ss]'), to_varchar(col, '[yyyy-MM-dd HH:mm:ss]') from v;
-- literals
-select col, date_format(col, "姚123'GyYqQMLwWuEFDdhHmsSaVzZxXOV'") from v;
-select col, date_format(col, "''") from v;
-select col, date_format(col, '') from v;
+select col, date_format(col, "姚123'GyYqQMLwWuEFDdhHmsSaVzZxXOV'"), to_char(col, "姚123'GyYqQMLwWuEFDdhHmsSaVzZxXOV'"), to_varchar(col, "姚123'GyYqQMLwWuEFDdhHmsSaVzZxXOV'") from v;
+select col, date_format(col, "''"), to_char(col, "''"), to_varchar(col, "''") from v;
+select col, date_format(col, ''), to_char(col, ''), to_varchar(col, '') from v;
+
+-- different datetime types
+select date_format(date'2023-08-18', 'yyyy-MM-dd'), to_char(date'2023-08-18', 'yyyy-MM-dd'), to_varchar(date'2023-08-18', 'yyyy-MM-dd');
+select date_format(timestamp_ltz'2023-08-18 09:13:14.123456Z', 'yyyy-MM-dd HH:mm:ss.SSSSSSZ'), to_char(timestamp_ltz'2023-08-18 09:13:14.123456Z', 'yyyy-MM-dd HH:mm:ss.SSSSSSZ'), to_varchar(timestamp_ltz'2023-08-18 09:13:14.123456Z', 'yyyy-MM-dd HH:mm:ss.SSSSSSZ');
+select date_format(timestamp_ntz'2023-08-18 09:13:14.123456', 'yyyy-MM-dd HH:mm:ss.SSSSSS'), to_char(timestamp_ntz'2023-08-18 09:13:14.123456', 'yyyy-MM-dd HH:mm:ss.SSSSSS'), to_varchar(timestamp_ntz'2023-08-18 09:13:14.123456', 'yyyy-MM-dd HH:mm:ss.SSSSSS');
diff --git a/sql/core/src/test/resources/sql-tests/results/datetime-formatting-legacy.sql.out b/sql/core/src/test/resources/sql-tests/results/datetime-formatting-legacy.sql.out
index ed43af9cb518..b920f8f29658 100644
--- a/sql/core/src/test/resources/sql-tests/results/datetime-formatting-legacy.sql.out
+++ b/sql/core/src/test/resources/sql-tests/results/datetime-formatting-legacy.sql.out
@@ -15,35 +15,35 @@ struct<>
-- !query
-select col, date_format(col, 'G GG GGG GGGG') from v
+select col, date_format(col, 'G GG GGG GGGG'), to_char(col, 'G GG GGG GGGG'), to_varchar(col, 'G GG GGG GGGG') from v
-- !query schema
-struct
+struct
-- !query output
-1582-05-31 19:40:35.123 AD AD AD AD
-1969-12-31 15:00:00 AD AD AD AD
-1970-12-31 04:59:59.999 AD AD AD AD
-1996-03-31 07:03:33.123 AD AD AD AD
-2018-11-17 05:33:33.123 AD AD AD AD
-2019-12-31 09:33:33.123 AD AD AD AD
-2100-01-01 01:33:33.123 AD AD AD AD
+1582-05-31 19:40:35.123 AD AD AD AD AD AD AD AD AD AD AD AD
+1969-12-31 15:00:00 AD AD AD AD AD AD AD AD AD AD AD AD
+1970-12-31 04:59:59.999 AD AD AD AD AD AD AD AD AD AD AD AD
+1996-03-31 07:03:33.123 AD AD AD AD AD AD AD AD AD AD AD AD
+2018-11-17 05:33:33.123 AD AD AD AD AD AD AD AD AD AD AD AD
+2019-12-31 09:33:33.123 AD AD AD AD AD AD AD AD AD AD AD AD
+2100-01-01 01:33:33.123 AD AD AD AD AD AD AD AD AD AD AD AD
-- !query
-select col, date_format(col, 'y yy yyy yyyy yyyyy yyyyyy') from v
+select col, date_format(col, 'y yy yyy yyyy yyyyy yyyyyy'), to_char(col, 'y yy yyy yyyy yyyyy yyyyyy'), to_varchar(col, 'y yy yyy yyyy yyyyy yyyyyy') from v
-- !query schema
-struct
+struct
-- !query output
-1582-05-31 19:40:35.123 1582 82 1582 1582 01582 001582
-1969-12-31 15:00:00 1969 69 1969 1969 01969 001969
-1970-12-31 04:59:59.999 1970 70 1970 1970 01970 001970
-1996-03-31 07:03:33.123 1996 96 1996 1996 01996 001996
-2018-11-17 05:33:33.123 2018 18 2018 2018 02018 002018
-2019-12-31 09:33:33.123 2019 19 2019 2019 02019 002019
-2100-01-01 01:33:33.123 2100 00 2100 2100 02100 002100
+1582-05-31 19:40:35.123 1582 82 1582 1582 01582 001582 1582 82 1582 1582 01582 001582 1582 82 1582 1582 01582 001582
+1969-12-31 15:00:00 1969 69 1969 1969 01969 001969 1969 69 1969 1969 01969 001969 1969 69 1969 1969 01969 001969
+1970-12-31 04:59:59.999 1970 70 1970 1970 01970 001970 1970 70 1970 1970 01970 001970 1970 70 1970 1970 01970 001970
+1996-03-31 07:03:33.123 1996 96 1996 1996 01996 001996 1996 96 1996 1996 01996 001996 1996 96 1996 1996 01996 001996
+2018-11-17 05:33:33.123 2018 18 2018 2018 02018 002018 2018 18 2018 2018 02018 002018 2018 18 2018 2018 02018 002018
+2019-12-31 09:33:33.123 2019 19 2019 2019 02019 002019 2019 19 2019 2019 02019 002019 2019 19 2019 2019 02019 002019
+2100-01-01 01:33:33.123 2100 00 2100 2100 02100 002100 2100 00 2100 2100 02100 002100 2100 00 2100 2100 02100 002100
-- !query
-select col, date_format(col, 'q qq') from v
+select col, date_format(col, 'q qq'), to_char(col, 'q qq'), to_varchar(col, 'q qq') from v
-- !query schema
struct<>
-- !query output
@@ -52,7 +52,7 @@ Illegal pattern character 'q'
-- !query
-select col, date_format(col, 'Q QQ QQQ QQQQ') from v
+select col, date_format(col, 'Q QQ QQQ QQQQ'), to_char(col, 'Q QQ QQQ QQQQ'), to_varchar(col, 'Q QQ QQQ QQQQ') from v
-- !query schema
struct<>
-- !query output
@@ -61,211 +61,211 @@ Illegal pattern character 'Q'
-- !query
-select col, date_format(col, 'M MM MMM MMMM') from v
+select col, date_format(col, 'M MM MMM MMMM'), to_char(col, 'M MM MMM MMMM'), to_varchar(col, 'M MM MMM MMMM') from v
-- !query schema
-struct
+struct
-- !query output
-1582-05-31 19:40:35.123 5 05 May May
-1969-12-31 15:00:00 12 12 Dec December
-1970-12-31 04:59:59.999 12 12 Dec December
-1996-03-31 07:03:33.123 3 03 Mar March
-2018-11-17 05:33:33.123 11 11 Nov November
-2019-12-31 09:33:33.123 12 12 Dec December
-2100-01-01 01:33:33.123 1 01 Jan January
+1582-05-31 19:40:35.123 5 05 May May 5 05 May May 5 05 May May
+1969-12-31 15:00:00 12 12 Dec December 12 12 Dec December 12 12 Dec December
+1970-12-31 04:59:59.999 12 12 Dec December 12 12 Dec December 12 12 Dec December
+1996-03-31 07:03:33.123 3 03 Mar March 3 03 Mar March 3 03 Mar March
+2018-11-17 05:33:33.123 11 11 Nov November 11 11 Nov November 11 11 Nov November
+2019-12-31 09:33:33.123 12 12 Dec December 12 12 Dec December 12 12 Dec December
+2100-01-01 01:33:33.123 1 01 Jan January 1 01 Jan January 1 01 Jan January
-- !query
-select col, date_format(col, 'L LL') from v
+select col, date_format(col, 'L LL'), to_char(col, 'L LL'), to_varchar(col, 'L LL') from v
-- !query schema
-struct
+struct
-- !query output
-1582-05-31 19:40:35.123 5 05
-1969-12-31 15:00:00 12 12
-1970-12-31 04:59:59.999 12 12
-1996-03-31 07:03:33.123 3 03
-2018-11-17 05:33:33.123 11 11
-2019-12-31 09:33:33.123 12 12
-2100-01-01 01:33:33.123 1 01
+1582-05-31 19:40:35.123 5 05 5 05 5 05
+1969-12-31 15:00:00 12 12 12 12 12 12
+1970-12-31 04:59:59.999 12 12 12 12 12 12
+1996-03-31 07:03:33.123 3 03 3 03 3 03
+2018-11-17 05:33:33.123 11 11 11 11 11 11
+2019-12-31 09:33:33.123 12 12 12 12 12 12
+2100-01-01 01:33:33.123 1 01 1 01 1 01
-- !query
-select col, date_format(col, 'E EE EEE EEEE') from v
+select col, date_format(col, 'E EE EEE EEEE'), to_char(col, 'E EE EEE EEEE'), to_varchar(col, 'E EE EEE EEEE') from v
-- !query schema
-struct
+struct
-- !query output
-1582-05-31 19:40:35.123 Thu Thu Thu Thursday
-1969-12-31 15:00:00 Wed Wed Wed Wednesday
-1970-12-31 04:59:59.999 Thu Thu Thu Thursday
-1996-03-31 07:03:33.123 Sun Sun Sun Sunday
-2018-11-17 05:33:33.123 Sat Sat Sat Saturday
-2019-12-31 09:33:33.123 Tue Tue Tue Tuesday
-2100-01-01 01:33:33.123 Fri Fri Fri Friday
+1582-05-31 19:40:35.123 Thu Thu Thu Thursday Thu Thu Thu Thursday Thu Thu Thu Thursday
+1969-12-31 15:00:00 Wed Wed Wed Wednesday Wed Wed Wed Wednesday Wed Wed Wed Wednesday
+1970-12-31 04:59:59.999 Thu Thu Thu Thursday Thu Thu Thu Thursday Thu Thu Thu Thursday
+1996-03-31 07:03:33.123 Sun Sun Sun Sunday Sun Sun Sun Sunday Sun Sun Sun Sunday
+2018-11-17 05:33:33.123 Sat Sat Sat Saturday Sat Sat Sat Saturday Sat Sat Sat Saturday
+2019-12-31 09:33:33.123 Tue Tue Tue Tuesday Tue Tue Tue Tuesday Tue Tue Tue Tuesday
+2100-01-01 01:33:33.123 Fri Fri Fri Friday Fri Fri Fri Friday Fri Fri Fri Friday
-- !query
-select col, date_format(col, 'F') from v
+select col, date_format(col, 'F'), to_char(col, 'F'), to_varchar(col, 'F') from v
-- !query schema
-struct
+struct
-- !query output
-1582-05-31 19:40:35.123 5
-1969-12-31 15:00:00 5
-1970-12-31 04:59:59.999 5
-1996-03-31 07:03:33.123 5
-2018-11-17 05:33:33.123 3
-2019-12-31 09:33:33.123 5
-2100-01-01 01:33:33.123 1
+1582-05-31 19:40:35.123 5 5 5
+1969-12-31 15:00:00 5 5 5
+1970-12-31 04:59:59.999 5 5 5
+1996-03-31 07:03:33.123 5 5 5
+2018-11-17 05:33:33.123 3 3 3
+2019-12-31 09:33:33.123 5 5 5
+2100-01-01 01:33:33.123 1 1 1
-- !query
-select col, date_format(col, 'd dd') from v
+select col, date_format(col, 'd dd'), to_char(col, 'd dd'), to_varchar(col, 'd dd') from v
-- !query schema
-struct
+struct
-- !query output
-1582-05-31 19:40:35.123 31 31
-1969-12-31 15:00:00 31 31
-1970-12-31 04:59:59.999 31 31
-1996-03-31 07:03:33.123 31 31
-2018-11-17 05:33:33.123 17 17
-2019-12-31 09:33:33.123 31 31
-2100-01-01 01:33:33.123 1 01
+1582-05-31 19:40:35.123 31 31 31 31 31 31
+1969-12-31 15:00:00 31 31 31 31 31 31
+1970-12-31 04:59:59.999 31 31 31 31 31 31
+1996-03-31 07:03:33.123 31 31 31 31 31 31
+2018-11-17 05:33:33.123 17 17 17 17 17 17
+2019-12-31 09:33:33.123 31 31 31 31 31 31
+2100-01-01 01:33:33.123 1 01 1 01 1 01
-- !query
-select col, date_format(col, 'DD') from v where col = timestamp '2100-01-01 01:33:33.123America/Los_Angeles'
+select col, date_format(col, 'DD'), to_char(col, 'DD'), to_varchar(col, 'DD') from v where col = timestamp '2100-01-01 01:33:33.123America/Los_Angeles'
-- !query schema
-struct
+struct
-- !query output
-2100-01-01 01:33:33.123 01
+2100-01-01 01:33:33.123 01 01 01
-- !query
-select col, date_format(col, 'D DDD') from v
+select col, date_format(col, 'D DDD'), to_char(col, 'D DDD'), to_varchar(col, 'D DDD') from v
-- !query schema
-struct
+struct
-- !query output
-1582-05-31 19:40:35.123 151 151
-1969-12-31 15:00:00 365 365
-1970-12-31 04:59:59.999 365 365
-1996-03-31 07:03:33.123 91 091
-2018-11-17 05:33:33.123 321 321
-2019-12-31 09:33:33.123 365 365
-2100-01-01 01:33:33.123 1 001
+1582-05-31 19:40:35.123 151 151 151 151 151 151
+1969-12-31 15:00:00 365 365 365 365 365 365
+1970-12-31 04:59:59.999 365 365 365 365 365 365
+1996-03-31 07:03:33.123 91 091 91 091 91 091
+2018-11-17 05:33:33.123 321 321 321 321 321 321
+2019-12-31 09:33:33.123 365 365 365 365 365 365
+2100-01-01 01:33:33.123 1 001 1 001 1 001
-- !query
-select col, date_format(col, 'H HH') from v
+select col, date_format(col, 'H HH'), to_char(col, 'H HH'), to_varchar(col, 'H HH') from v
-- !query schema
-struct
+struct
-- !query output
-1582-05-31 19:40:35.123 19 19
-1969-12-31 15:00:00 15 15
-1970-12-31 04:59:59.999 4 04
-1996-03-31 07:03:33.123 7 07
-2018-11-17 05:33:33.123 5 05
-2019-12-31 09:33:33.123 9 09
-2100-01-01 01:33:33.123 1 01
+1582-05-31 19:40:35.123 19 19 19 19 19 19
+1969-12-31 15:00:00 15 15 15 15 15 15
+1970-12-31 04:59:59.999 4 04 4 04 4 04
+1996-03-31 07:03:33.123 7 07 7 07 7 07
+2018-11-17 05:33:33.123 5 05 5 05 5 05
+2019-12-31 09:33:33.123 9 09 9 09 9 09
+2100-01-01 01:33:33.123 1 01 1 01 1 01
-- !query
-select col, date_format(col, 'h hh') from v
+select col, date_format(col, 'h hh'), to_char(col, 'h hh'), to_varchar(col, 'h hh') from v
-- !query schema
-struct
+struct
-- !query output
-1582-05-31 19:40:35.123 7 07
-1969-12-31 15:00:00 3 03
-1970-12-31 04:59:59.999 4 04
-1996-03-31 07:03:33.123 7 07
-2018-11-17 05:33:33.123 5 05
-2019-12-31 09:33:33.123 9 09
-2100-01-01 01:33:33.123 1 01
+1582-05-31 19:40:35.123 7 07 7 07 7 07
+1969-12-31 15:00:00 3 03 3 03 3 03
+1970-12-31 04:59:59.999 4 04 4 04 4 04
+1996-03-31 07:03:33.123 7 07 7 07 7 07
+2018-11-17 05:33:33.123 5 05 5 05 5 05
+2019-12-31 09:33:33.123 9 09 9 09 9 09
+2100-01-01 01:33:33.123 1 01 1 01 1 01
-- !query
-select col, date_format(col, 'k kk') from v
+select col, date_format(col, 'k kk'), to_char(col, 'k kk'), to_varchar(col, 'k kk') from v
-- !query schema
-struct
+struct
-- !query output
-1582-05-31 19:40:35.123 19 19
-1969-12-31 15:00:00 15 15
-1970-12-31 04:59:59.999 4 04
-1996-03-31 07:03:33.123 7 07
-2018-11-17 05:33:33.123 5 05
-2019-12-31 09:33:33.123 9 09
-2100-01-01 01:33:33.123 1 01
+1582-05-31 19:40:35.123 19 19 19 19 19 19
+1969-12-31 15:00:00 15 15 15 15 15 15
+1970-12-31 04:59:59.999 4 04 4 04 4 04
+1996-03-31 07:03:33.123 7 07 7 07 7 07
+2018-11-17 05:33:33.123 5 05 5 05 5 05
+2019-12-31 09:33:33.123 9 09 9 09 9 09
+2100-01-01 01:33:33.123 1 01 1 01 1 01
-- !query
-select col, date_format(col, 'K KK') from v
+select col, date_format(col, 'K KK'), to_char(col, 'K KK'), to_varchar(col, 'K KK') from v
-- !query schema
-struct
+struct
-- !query output
-1582-05-31 19:40:35.123 7 07
-1969-12-31 15:00:00 3 03
-1970-12-31 04:59:59.999 4 04
-1996-03-31 07:03:33.123 7 07
-2018-11-17 05:33:33.123 5 05
-2019-12-31 09:33:33.123 9 09
-2100-01-01 01:33:33.123 1 01
+1582-05-31 19:40:35.123 7 07 7 07 7 07
+1969-12-31 15:00:00 3 03 3 03 3 03
+1970-12-31 04:59:59.999 4 04 4 04 4 04
+1996-03-31 07:03:33.123 7 07 7 07 7 07
+2018-11-17 05:33:33.123 5 05 5 05 5 05
+2019-12-31 09:33:33.123 9 09 9 09 9 09
+2100-01-01 01:33:33.123 1 01 1 01 1 01
-- !query
-select col, date_format(col, 'm mm') from v
+select col, date_format(col, 'm mm'), to_char(col, 'm mm'), to_varchar(col, 'm mm') from v
-- !query schema
-struct
+struct
-- !query output
-1582-05-31 19:40:35.123 40 40
-1969-12-31 15:00:00 0 00
-1970-12-31 04:59:59.999 59 59
-1996-03-31 07:03:33.123 3 03
-2018-11-17 05:33:33.123 33 33
-2019-12-31 09:33:33.123 33 33
-2100-01-01 01:33:33.123 33 33
+1582-05-31 19:40:35.123 40 40 40 40 40 40
+1969-12-31 15:00:00 0 00 0 00 0 00
+1970-12-31 04:59:59.999 59 59 59 59 59 59
+1996-03-31 07:03:33.123 3 03 3 03 3 03
+2018-11-17 05:33:33.123 33 33 33 33 33 33
+2019-12-31 09:33:33.123 33 33 33 33 33 33
+2100-01-01 01:33:33.123 33 33 33 33 33 33
-- !query
-select col, date_format(col, 's ss') from v
+select col, date_format(col, 's ss'), to_char(col, 's ss'), to_varchar(col, 's ss') from v
-- !query schema
-struct
+struct
-- !query output
-1582-05-31 19:40:35.123 35 35
-1969-12-31 15:00:00 0 00
-1970-12-31 04:59:59.999 59 59
-1996-03-31 07:03:33.123 33 33
-2018-11-17 05:33:33.123 33 33
-2019-12-31 09:33:33.123 33 33
-2100-01-01 01:33:33.123 33 33
+1582-05-31 19:40:35.123 35 35 35 35 35 35
+1969-12-31 15:00:00 0 00 0 00 0 00
+1970-12-31 04:59:59.999 59 59 59 59 59 59
+1996-03-31 07:03:33.123 33 33 33 33 33 33
+2018-11-17 05:33:33.123 33 33 33 33 33 33
+2019-12-31 09:33:33.123 33 33 33 33 33 33
+2100-01-01 01:33:33.123 33 33 33 33 33 33
-- !query
-select col, date_format(col, 'S SS SSS SSSS SSSSS SSSSSS SSSSSSS SSSSSSSS SSSSSSSSS') from v
+select col, date_format(col, 'S SS SSS SSSS SSSSS SSSSSS SSSSSSS SSSSSSSS SSSSSSSSS'), to_char(col, 'S SS SSS SSSS SSSSS SSSSSS SSSSSSS SSSSSSSS SSSSSSSSS'), to_varchar(col, 'S SS SSS SSSS SSSSS SSSSSS SSSSSSS SSSSSSSS SSSSSSSSS') from v
-- !query schema
-struct
+struct
-- !query output
-1582-05-31 19:40:35.123 123 123 123 0123 00123 000123 0000123 00000123 000000123
-1969-12-31 15:00:00 0 00 000 0000 00000 000000 0000000 00000000 000000000
-1970-12-31 04:59:59.999 999 999 999 0999 00999 000999 0000999 00000999 000000999
-1996-03-31 07:03:33.123 123 123 123 0123 00123 000123 0000123 00000123 000000123
-2018-11-17 05:33:33.123 123 123 123 0123 00123 000123 0000123 00000123 000000123
-2019-12-31 09:33:33.123 123 123 123 0123 00123 000123 0000123 00000123 000000123
-2100-01-01 01:33:33.123 123 123 123 0123 00123 000123 0000123 00000123 000000123
+1582-05-31 19:40:35.123 123 123 123 0123 00123 000123 0000123 00000123 000000123 123 123 123 0123 00123 000123 0000123 00000123 000000123 123 123 123 0123 00123 000123 0000123 00000123 000000123
+1969-12-31 15:00:00 0 00 000 0000 00000 000000 0000000 00000000 000000000 0 00 000 0000 00000 000000 0000000 00000000 000000000 0 00 000 0000 00000 000000 0000000 00000000 000000000
+1970-12-31 04:59:59.999 999 999 999 0999 00999 000999 0000999 00000999 000000999 999 999 999 0999 00999 000999 0000999 00000999 000000999 999 999 999 0999 00999 000999 0000999 00000999 000000999
+1996-03-31 07:03:33.123 123 123 123 0123 00123 000123 0000123 00000123 000000123 123 123 123 0123 00123 000123 0000123 00000123 000000123 123 123 123 0123 00123 000123 0000123 00000123 000000123
+2018-11-17 05:33:33.123 123 123 123 0123 00123 000123 0000123 00000123 000000123 123 123 123 0123 00123 000123 0000123 00000123 000000123 123 123 123 0123 00123 000123 0000123 00000123 000000123
+2019-12-31 09:33:33.123 123 123 123 0123 00123 000123 0000123 00000123 000000123 123 123 123 0123 00123 000123 0000123 00000123 000000123 123 123 123 0123 00123 000123 0000123 00000123 000000123
+2100-01-01 01:33:33.123 123 123 123 0123 00123 000123 0000123 00000123 000000123 123 123 123 0123 00123 000123 0000123 00000123 000000123 123 123 123 0123 00123 000123 0000123 00000123 000000123
-- !query
-select col, date_format(col, 'a') from v
+select col, date_format(col, 'a'), to_char(col, 'a'), to_varchar(col, 'a') from v
-- !query schema
-struct
+struct
-- !query output
-1582-05-31 19:40:35.123 PM
-1969-12-31 15:00:00 PM
-1970-12-31 04:59:59.999 AM
-1996-03-31 07:03:33.123 AM
-2018-11-17 05:33:33.123 AM
-2019-12-31 09:33:33.123 AM
-2100-01-01 01:33:33.123 AM
+1582-05-31 19:40:35.123 PM PM PM
+1969-12-31 15:00:00 PM PM PM
+1970-12-31 04:59:59.999 AM AM AM
+1996-03-31 07:03:33.123 AM AM AM
+2018-11-17 05:33:33.123 AM AM AM
+2019-12-31 09:33:33.123 AM AM AM
+2100-01-01 01:33:33.123 AM AM AM
-- !query
-select col, date_format(col, 'VV') from v
+select col, date_format(col, 'VV'), to_char(col, 'VV'), to_varchar(col, 'VV') from v
-- !query schema
struct<>
-- !query output
@@ -274,35 +274,35 @@ Illegal pattern character 'V'
-- !query
-select col, date_format(col, 'z zz zzz zzzz') from v
+select col, date_format(col, 'z zz zzz zzzz'), to_char(col, 'z zz zzz zzzz'), to_varchar(col, 'z zz zzz zzzz') from v
-- !query schema
-struct
+struct
-- !query output
-1582-05-31 19:40:35.123 PST PST PST Pacific Standard Time
-1969-12-31 15:00:00 PST PST PST Pacific Standard Time
-1970-12-31 04:59:59.999 PST PST PST Pacific Standard Time
-1996-03-31 07:03:33.123 PST PST PST Pacific Standard Time
-2018-11-17 05:33:33.123 PST PST PST Pacific Standard Time
-2019-12-31 09:33:33.123 PST PST PST Pacific Standard Time
-2100-01-01 01:33:33.123 PST PST PST Pacific Standard Time
+1582-05-31 19:40:35.123 PST PST PST Pacific Standard Time PST PST PST Pacific Standard Time PST PST PST Pacific Standard Time
+1969-12-31 15:00:00 PST PST PST Pacific Standard Time PST PST PST Pacific Standard Time PST PST PST Pacific Standard Time
+1970-12-31 04:59:59.999 PST PST PST Pacific Standard Time PST PST PST Pacific Standard Time PST PST PST Pacific Standard Time
+1996-03-31 07:03:33.123 PST PST PST Pacific Standard Time PST PST PST Pacific Standard Time PST PST PST Pacific Standard Time
+2018-11-17 05:33:33.123 PST PST PST Pacific Standard Time PST PST PST Pacific Standard Time PST PST PST Pacific Standard Time
+2019-12-31 09:33:33.123 PST PST PST Pacific Standard Time PST PST PST Pacific Standard Time PST PST PST Pacific Standard Time
+2100-01-01 01:33:33.123 PST PST PST Pacific Standard Time PST PST PST Pacific Standard Time PST PST PST Pacific Standard Time
-- !query
-select col, date_format(col, 'X XX XXX') from v
+select col, date_format(col, 'X XX XXX'), to_char(col, 'X XX XXX'), to_varchar(col, 'X XX XXX') from v
-- !query schema
-struct
+struct
-- !query output
-1582-05-31 19:40:35.123 -08 -0800 -08:00
-1969-12-31 15:00:00 -08 -0800 -08:00
-1970-12-31 04:59:59.999 -08 -0800 -08:00
-1996-03-31 07:03:33.123 -08 -0800 -08:00
-2018-11-17 05:33:33.123 -08 -0800 -08:00
-2019-12-31 09:33:33.123 -08 -0800 -08:00
-2100-01-01 01:33:33.123 -08 -0800 -08:00
+1582-05-31 19:40:35.123 -08 -0800 -08:00 -08 -0800 -08:00 -08 -0800 -08:00
+1969-12-31 15:00:00 -08 -0800 -08:00 -08 -0800 -08:00 -08 -0800 -08:00
+1970-12-31 04:59:59.999 -08 -0800 -08:00 -08 -0800 -08:00 -08 -0800 -08:00
+1996-03-31 07:03:33.123 -08 -0800 -08:00 -08 -0800 -08:00 -08 -0800 -08:00
+2018-11-17 05:33:33.123 -08 -0800 -08:00 -08 -0800 -08:00 -08 -0800 -08:00
+2019-12-31 09:33:33.123 -08 -0800 -08:00 -08 -0800 -08:00 -08 -0800 -08:00
+2100-01-01 01:33:33.123 -08 -0800 -08:00 -08 -0800 -08:00 -08 -0800 -08:00
-- !query
-select col, date_format(col, 'XXXX XXXXX') from v
+select col, date_format(col, 'XXXX XXXXX'), to_char(col, 'XXXX XXXXX'), to_varchar(col, 'XXXX XXXXX') from v
-- !query schema
struct<>
-- !query output
@@ -311,21 +311,21 @@ invalid ISO 8601 format: length=4
-- !query
-select col, date_format(col, 'Z ZZ ZZZ ZZZZ ZZZZZ') from v
+select col, date_format(col, 'Z ZZ ZZZ ZZZZ ZZZZZ'), to_char(col, 'Z ZZ ZZZ ZZZZ ZZZZZ'), to_varchar(col, 'Z ZZ ZZZ ZZZZ ZZZZZ') from v
-- !query schema
-struct
+struct
-- !query output
-1582-05-31 19:40:35.123 -0800 -0800 -0800 -0800 -0800
-1969-12-31 15:00:00 -0800 -0800 -0800 -0800 -0800
-1970-12-31 04:59:59.999 -0800 -0800 -0800 -0800 -0800
-1996-03-31 07:03:33.123 -0800 -0800 -0800 -0800 -0800
-2018-11-17 05:33:33.123 -0800 -0800 -0800 -0800 -0800
-2019-12-31 09:33:33.123 -0800 -0800 -0800 -0800 -0800
-2100-01-01 01:33:33.123 -0800 -0800 -0800 -0800 -0800
+1582-05-31 19:40:35.123 -0800 -0800 -0800 -0800 -0800 -0800 -0800 -0800 -0800 -0800 -0800 -0800 -0800 -0800 -0800
+1969-12-31 15:00:00 -0800 -0800 -0800 -0800 -0800 -0800 -0800 -0800 -0800 -0800 -0800 -0800 -0800 -0800 -0800
+1970-12-31 04:59:59.999 -0800 -0800 -0800 -0800 -0800 -0800 -0800 -0800 -0800 -0800 -0800 -0800 -0800 -0800 -0800
+1996-03-31 07:03:33.123 -0800 -0800 -0800 -0800 -0800 -0800 -0800 -0800 -0800 -0800 -0800 -0800 -0800 -0800 -0800
+2018-11-17 05:33:33.123 -0800 -0800 -0800 -0800 -0800 -0800 -0800 -0800 -0800 -0800 -0800 -0800 -0800 -0800 -0800
+2019-12-31 09:33:33.123 -0800 -0800 -0800 -0800 -0800 -0800 -0800 -0800 -0800 -0800 -0800 -0800 -0800 -0800 -0800
+2100-01-01 01:33:33.123 -0800 -0800 -0800 -0800 -0800 -0800 -0800 -0800 -0800 -0800 -0800 -0800 -0800 -0800 -0800
-- !query
-select col, date_format(col, 'O OOOO') from v
+select col, date_format(col, 'O OOOO'), to_char(col, 'O OOOO'), to_varchar(col, 'O OOOO') from v
-- !query schema
struct<>
-- !query output
@@ -334,7 +334,7 @@ Illegal pattern character 'O'
-- !query
-select col, date_format(col, 'x xx xxx xxxx xxxx xxxxx') from v
+select col, date_format(col, 'x xx xxx xxxx xxxx xxxxx'), to_char(col, 'x xx xxx xxxx xxxx xxxxx'), to_varchar(col, 'x xx xxx xxxx xxxx xxxxx') from v
-- !query schema
struct<>
-- !query output
@@ -343,56 +343,80 @@ Illegal pattern character 'x'
-- !query
-select col, date_format(col, '[yyyy-MM-dd HH:mm:ss]') from v
+select col, date_format(col, '[yyyy-MM-dd HH:mm:ss]'), to_char(col, '[yyyy-MM-dd HH:mm:ss]'), to_varchar(col, '[yyyy-MM-dd HH:mm:ss]') from v
-- !query schema
-struct
+struct
-- !query output
-1582-05-31 19:40:35.123 [1582-05-31 19:40:35]
-1969-12-31 15:00:00 [1969-12-31 15:00:00]
-1970-12-31 04:59:59.999 [1970-12-31 04:59:59]
-1996-03-31 07:03:33.123 [1996-03-31 07:03:33]
-2018-11-17 05:33:33.123 [2018-11-17 05:33:33]
-2019-12-31 09:33:33.123 [2019-12-31 09:33:33]
-2100-01-01 01:33:33.123 [2100-01-01 01:33:33]
+1582-05-31 19:40:35.123 [1582-05-31 19:40:35] [1582-05-31 19:40:35] [1582-05-31 19:40:35]
+1969-12-31 15:00:00 [1969-12-31 15:00:00] [1969-12-31 15:00:00] [1969-12-31 15:00:00]
+1970-12-31 04:59:59.999 [1970-12-31 04:59:59] [1970-12-31 04:59:59] [1970-12-31 04:59:59]
+1996-03-31 07:03:33.123 [1996-03-31 07:03:33] [1996-03-31 07:03:33] [1996-03-31 07:03:33]
+2018-11-17 05:33:33.123 [2018-11-17 05:33:33] [2018-11-17 05:33:33] [2018-11-17 05:33:33]
+2019-12-31 09:33:33.123 [2019-12-31 09:33:33] [2019-12-31 09:33:33] [2019-12-31 09:33:33]
+2100-01-01 01:33:33.123 [2100-01-01 01:33:33] [2100-01-01 01:33:33] [2100-01-01 01:33:33]
-- !query
-select col, date_format(col, "姚123'GyYqQMLwWuEFDdhHmsSaVzZxXOV'") from v
+select col, date_format(col, "姚123'GyYqQMLwWuEFDdhHmsSaVzZxXOV'"), to_char(col, "姚123'GyYqQMLwWuEFDdhHmsSaVzZxXOV'"), to_varchar(col, "姚123'GyYqQMLwWuEFDdhHmsSaVzZxXOV'") from v
-- !query schema
-struct
+struct
-- !query output
-1582-05-31 19:40:35.123 姚123GyYqQMLwWuEFDdhHmsSaVzZxXOV
-1969-12-31 15:00:00 姚123GyYqQMLwWuEFDdhHmsSaVzZxXOV
-1970-12-31 04:59:59.999 姚123GyYqQMLwWuEFDdhHmsSaVzZxXOV
-1996-03-31 07:03:33.123 姚123GyYqQMLwWuEFDdhHmsSaVzZxXOV
-2018-11-17 05:33:33.123 姚123GyYqQMLwWuEFDdhHmsSaVzZxXOV
-2019-12-31 09:33:33.123 姚123GyYqQMLwWuEFDdhHmsSaVzZxXOV
-2100-01-01 01:33:33.123 姚123GyYqQMLwWuEFDdhHmsSaVzZxXOV
+1582-05-31 19:40:35.123 姚123GyYqQMLwWuEFDdhHmsSaVzZxXOV 姚123GyYqQMLwWuEFDdhHmsSaVzZxXOV 姚123GyYqQMLwWuEFDdhHmsSaVzZxXOV
+1969-12-31 15:00:00 姚123GyYqQMLwWuEFDdhHmsSaVzZxXOV 姚123GyYqQMLwWuEFDdhHmsSaVzZxXOV 姚123GyYqQMLwWuEFDdhHmsSaVzZxXOV
+1970-12-31 04:59:59.999 姚123GyYqQMLwWuEFDdhHmsSaVzZxXOV 姚123GyYqQMLwWuEFDdhHmsSaVzZxXOV 姚123GyYqQMLwWuEFDdhHmsSaVzZxXOV
+1996-03-31 07:03:33.123 姚123GyYqQMLwWuEFDdhHmsSaVzZxXOV 姚123GyYqQMLwWuEFDdhHmsSaVzZxXOV 姚123GyYqQMLwWuEFDdhHmsSaVzZxXOV
+2018-11-17 05:33:33.123 姚123GyYqQMLwWuEFDdhHmsSaVzZxXOV 姚123GyYqQMLwWuEFDdhHmsSaVzZxXOV 姚123GyYqQMLwWuEFDdhHmsSaVzZxXOV
+2019-12-31 09:33:33.123 姚123GyYqQMLwWuEFDdhHmsSaVzZxXOV 姚123GyYqQMLwWuEFDdhHmsSaVzZxXOV 姚123GyYqQMLwWuEFDdhHmsSaVzZxXOV
+2100-01-01 01:33:33.123 姚123GyYqQMLwWuEFDdhHmsSaVzZxXOV 姚123GyYqQMLwWuEFDdhHmsSaVzZxXOV 姚123GyYqQMLwWuEFDdhHmsSaVzZxXOV
-- !query
-select col, date_format(col, "''") from v
+select col, date_format(col, "''"), to_char(col, "''"), to_varchar(col, "''") from v
-- !query schema
-struct
+struct
-- !query output
-1582-05-31 19:40:35.123 '
-1969-12-31 15:00:00 '
-1970-12-31 04:59:59.999 '
-1996-03-31 07:03:33.123 '
-2018-11-17 05:33:33.123 '
-2019-12-31 09:33:33.123 '
-2100-01-01 01:33:33.123 '
+1582-05-31 19:40:35.123 ' ' '
+1969-12-31 15:00:00 ' ' '
+1970-12-31 04:59:59.999 ' ' '
+1996-03-31 07:03:33.123 ' ' '
+2018-11-17 05:33:33.123 ' ' '
+2019-12-31 09:33:33.123 ' ' '
+2100-01-01 01:33:33.123 ' ' '
-- !query
-select col, date_format(col, '') from v
+select col, date_format(col, ''), to_char(col, ''), to_varchar(col, '') from v
-- !query schema
-struct
+struct
-- !query output
-1582-05-31 19:40:35.123
-1969-12-31 15:00:00
-1970-12-31 04:59:59.999
-1996-03-31 07:03:33.123
-2018-11-17 05:33:33.123
-2019-12-31 09:33:33.123
+1582-05-31 19:40:35.123
+1969-12-31 15:00:00
+1970-12-31 04:59:59.999
+1996-03-31 07:03:33.123
+2018-11-17 05:33:33.123
+2019-12-31 09:33:33.123
2100-01-01 01:33:33.123
+
+
+-- !query
+select date_format(date'2023-08-18', 'yyyy-MM-dd'), to_char(date'2023-08-18', 'yyyy-MM-dd'), to_varchar(date'2023-08-18', 'yyyy-MM-dd')
+-- !query schema
+struct
+-- !query output
+2023-08-18 2023-08-18 2023-08-18
+
+
+-- !query
+select date_format(timestamp_ltz'2023-08-18 09:13:14.123456Z', 'yyyy-MM-dd HH:mm:ss.SSSSSSZ'), to_char(timestamp_ltz'2023-08-18 09:13:14.123456Z', 'yyyy-MM-dd HH:mm:ss.SSSSSSZ'), to_varchar(timestamp_ltz'2023-08-18 09:13:14.123456Z', 'yyyy-MM-dd HH:mm:ss.SSSSSSZ')
+-- !query schema
+struct
+-- !query output
+2023-08-18 02:13:14.000123-0700 2023-08-18 02:13:14.000123-0700 2023-08-18 02:13:14.000123-0700
+
+
+-- !query
+select date_format(timestamp_ntz'2023-08-18 09:13:14.123456', 'yyyy-MM-dd HH:mm:ss.SSSSSS'), to_char(timestamp_ntz'2023-08-18 09:13:14.123456', 'yyyy-MM-dd HH:mm:ss.SSSSSS'), to_varchar(timestamp_ntz'2023-08-18 09:13:14.123456', 'yyyy-MM-dd HH:mm:ss.SSSSSS')
+-- !query schema
+struct
+-- !query output
+2023-08-18 09:13:14.000123 2023-08-18 09:13:14.000123 2023-08-18 09:13:14.000123
diff --git a/sql/core/src/test/resources/sql-tests/results/datetime-formatting.sql.out b/sql/core/src/test/resources/sql-tests/results/datetime-formatting.sql.out
index 960de2af4a3a..f659dbf0083d 100644
--- a/sql/core/src/test/resources/sql-tests/results/datetime-formatting.sql.out
+++ b/sql/core/src/test/resources/sql-tests/results/datetime-formatting.sql.out
@@ -15,414 +15,438 @@ struct<>
-- !query
-select col, date_format(col, 'G GG GGG GGGG') from v
+select col, date_format(col, 'G GG GGG GGGG'), to_char(col, 'G GG GGG GGGG'), to_varchar(col, 'G GG GGG GGGG') from v
-- !query schema
-struct
+struct
-- !query output
-1582-05-31 19:40:35.123 AD AD AD Anno Domini
-1969-12-31 15:00:00 AD AD AD Anno Domini
-1970-12-31 04:59:59.999 AD AD AD Anno Domini
-1996-03-31 07:03:33.123 AD AD AD Anno Domini
-2018-11-17 05:33:33.123 AD AD AD Anno Domini
-2019-12-31 09:33:33.123 AD AD AD Anno Domini
-2100-01-01 01:33:33.123 AD AD AD Anno Domini
+1582-05-31 19:40:35.123 AD AD AD Anno Domini AD AD AD Anno Domini AD AD AD Anno Domini
+1969-12-31 15:00:00 AD AD AD Anno Domini AD AD AD Anno Domini AD AD AD Anno Domini
+1970-12-31 04:59:59.999 AD AD AD Anno Domini AD AD AD Anno Domini AD AD AD Anno Domini
+1996-03-31 07:03:33.123 AD AD AD Anno Domini AD AD AD Anno Domini AD AD AD Anno Domini
+2018-11-17 05:33:33.123 AD AD AD Anno Domini AD AD AD Anno Domini AD AD AD Anno Domini
+2019-12-31 09:33:33.123 AD AD AD Anno Domini AD AD AD Anno Domini AD AD AD Anno Domini
+2100-01-01 01:33:33.123 AD AD AD Anno Domini AD AD AD Anno Domini AD AD AD Anno Domini
-- !query
-select col, date_format(col, 'y yy yyy yyyy yyyyy yyyyyy') from v
+select col, date_format(col, 'y yy yyy yyyy yyyyy yyyyyy'), to_char(col, 'y yy yyy yyyy yyyyy yyyyyy'), to_varchar(col, 'y yy yyy yyyy yyyyy yyyyyy') from v
-- !query schema
-struct
+struct
-- !query output
-1582-05-31 19:40:35.123 1582 82 1582 1582 01582 001582
-1969-12-31 15:00:00 1969 69 1969 1969 01969 001969
-1970-12-31 04:59:59.999 1970 70 1970 1970 01970 001970
-1996-03-31 07:03:33.123 1996 96 1996 1996 01996 001996
-2018-11-17 05:33:33.123 2018 18 2018 2018 02018 002018
-2019-12-31 09:33:33.123 2019 19 2019 2019 02019 002019
-2100-01-01 01:33:33.123 2100 00 2100 2100 02100 002100
+1582-05-31 19:40:35.123 1582 82 1582 1582 01582 001582 1582 82 1582 1582 01582 001582 1582 82 1582 1582 01582 001582
+1969-12-31 15:00:00 1969 69 1969 1969 01969 001969 1969 69 1969 1969 01969 001969 1969 69 1969 1969 01969 001969
+1970-12-31 04:59:59.999 1970 70 1970 1970 01970 001970 1970 70 1970 1970 01970 001970 1970 70 1970 1970 01970 001970
+1996-03-31 07:03:33.123 1996 96 1996 1996 01996 001996 1996 96 1996 1996 01996 001996 1996 96 1996 1996 01996 001996
+2018-11-17 05:33:33.123 2018 18 2018 2018 02018 002018 2018 18 2018 2018 02018 002018 2018 18 2018 2018 02018 002018
+2019-12-31 09:33:33.123 2019 19 2019 2019 02019 002019 2019 19 2019 2019 02019 002019 2019 19 2019 2019 02019 002019
+2100-01-01 01:33:33.123 2100 00 2100 2100 02100 002100 2100 00 2100 2100 02100 002100 2100 00 2100 2100 02100 002100
-- !query
-select col, date_format(col, 'q qq') from v
+select col, date_format(col, 'q qq'), to_char(col, 'q qq'), to_varchar(col, 'q qq') from v
-- !query schema
-struct
+struct
-- !query output
-1582-05-31 19:40:35.123 2 02
-1969-12-31 15:00:00 4 04
-1970-12-31 04:59:59.999 4 04
-1996-03-31 07:03:33.123 1 01
-2018-11-17 05:33:33.123 4 04
-2019-12-31 09:33:33.123 4 04
-2100-01-01 01:33:33.123 1 01
+1582-05-31 19:40:35.123 2 02 2 02 2 02
+1969-12-31 15:00:00 4 04 4 04 4 04
+1970-12-31 04:59:59.999 4 04 4 04 4 04
+1996-03-31 07:03:33.123 1 01 1 01 1 01
+2018-11-17 05:33:33.123 4 04 4 04 4 04
+2019-12-31 09:33:33.123 4 04 4 04 4 04
+2100-01-01 01:33:33.123 1 01 1 01 1 01
-- !query
-select col, date_format(col, 'Q QQ QQQ QQQQ') from v
+select col, date_format(col, 'Q QQ QQQ QQQQ'), to_char(col, 'Q QQ QQQ QQQQ'), to_varchar(col, 'Q QQ QQQ QQQQ') from v
-- !query schema
-struct
+struct
-- !query output
-1582-05-31 19:40:35.123 2 02 Q2 2nd quarter
-1969-12-31 15:00:00 4 04 Q4 4th quarter
-1970-12-31 04:59:59.999 4 04 Q4 4th quarter
-1996-03-31 07:03:33.123 1 01 Q1 1st quarter
-2018-11-17 05:33:33.123 4 04 Q4 4th quarter
-2019-12-31 09:33:33.123 4 04 Q4 4th quarter
-2100-01-01 01:33:33.123 1 01 Q1 1st quarter
+1582-05-31 19:40:35.123 2 02 Q2 2nd quarter 2 02 Q2 2nd quarter 2 02 Q2 2nd quarter
+1969-12-31 15:00:00 4 04 Q4 4th quarter 4 04 Q4 4th quarter 4 04 Q4 4th quarter
+1970-12-31 04:59:59.999 4 04 Q4 4th quarter 4 04 Q4 4th quarter 4 04 Q4 4th quarter
+1996-03-31 07:03:33.123 1 01 Q1 1st quarter 1 01 Q1 1st quarter 1 01 Q1 1st quarter
+2018-11-17 05:33:33.123 4 04 Q4 4th quarter 4 04 Q4 4th quarter 4 04 Q4 4th quarter
+2019-12-31 09:33:33.123 4 04 Q4 4th quarter 4 04 Q4 4th quarter 4 04 Q4 4th quarter
+2100-01-01 01:33:33.123 1 01 Q1 1st quarter 1 01 Q1 1st quarter 1 01 Q1 1st quarter
-- !query
-select col, date_format(col, 'M MM MMM MMMM') from v
+select col, date_format(col, 'M MM MMM MMMM'), to_char(col, 'M MM MMM MMMM'), to_varchar(col, 'M MM MMM MMMM') from v
-- !query schema
-struct
+struct
-- !query output
-1582-05-31 19:40:35.123 5 05 May May
-1969-12-31 15:00:00 12 12 Dec December
-1970-12-31 04:59:59.999 12 12 Dec December
-1996-03-31 07:03:33.123 3 03 Mar March
-2018-11-17 05:33:33.123 11 11 Nov November
-2019-12-31 09:33:33.123 12 12 Dec December
-2100-01-01 01:33:33.123 1 01 Jan January
+1582-05-31 19:40:35.123 5 05 May May 5 05 May May 5 05 May May
+1969-12-31 15:00:00 12 12 Dec December 12 12 Dec December 12 12 Dec December
+1970-12-31 04:59:59.999 12 12 Dec December 12 12 Dec December 12 12 Dec December
+1996-03-31 07:03:33.123 3 03 Mar March 3 03 Mar March 3 03 Mar March
+2018-11-17 05:33:33.123 11 11 Nov November 11 11 Nov November 11 11 Nov November
+2019-12-31 09:33:33.123 12 12 Dec December 12 12 Dec December 12 12 Dec December
+2100-01-01 01:33:33.123 1 01 Jan January 1 01 Jan January 1 01 Jan January
-- !query
-select col, date_format(col, 'L LL') from v
+select col, date_format(col, 'L LL'), to_char(col, 'L LL'), to_varchar(col, 'L LL') from v
-- !query schema
-struct
+struct
-- !query output
-1582-05-31 19:40:35.123 5 05
-1969-12-31 15:00:00 12 12
-1970-12-31 04:59:59.999 12 12
-1996-03-31 07:03:33.123 3 03
-2018-11-17 05:33:33.123 11 11
-2019-12-31 09:33:33.123 12 12
-2100-01-01 01:33:33.123 1 01
+1582-05-31 19:40:35.123 5 05 5 05 5 05
+1969-12-31 15:00:00 12 12 12 12 12 12
+1970-12-31 04:59:59.999 12 12 12 12 12 12
+1996-03-31 07:03:33.123 3 03 3 03 3 03
+2018-11-17 05:33:33.123 11 11 11 11 11 11
+2019-12-31 09:33:33.123 12 12 12 12 12 12
+2100-01-01 01:33:33.123 1 01 1 01 1 01
-- !query
-select col, date_format(col, 'E EE EEE EEEE') from v
+select col, date_format(col, 'E EE EEE EEEE'), to_char(col, 'E EE EEE EEEE'), to_varchar(col, 'E EE EEE EEEE') from v
-- !query schema
-struct
+struct
-- !query output
-1582-05-31 19:40:35.123 Mon Mon Mon Monday
-1969-12-31 15:00:00 Wed Wed Wed Wednesday
-1970-12-31 04:59:59.999 Thu Thu Thu Thursday
-1996-03-31 07:03:33.123 Sun Sun Sun Sunday
-2018-11-17 05:33:33.123 Sat Sat Sat Saturday
-2019-12-31 09:33:33.123 Tue Tue Tue Tuesday
-2100-01-01 01:33:33.123 Fri Fri Fri Friday
+1582-05-31 19:40:35.123 Mon Mon Mon Monday Mon Mon Mon Monday Mon Mon Mon Monday
+1969-12-31 15:00:00 Wed Wed Wed Wednesday Wed Wed Wed Wednesday Wed Wed Wed Wednesday
+1970-12-31 04:59:59.999 Thu Thu Thu Thursday Thu Thu Thu Thursday Thu Thu Thu Thursday
+1996-03-31 07:03:33.123 Sun Sun Sun Sunday Sun Sun Sun Sunday Sun Sun Sun Sunday
+2018-11-17 05:33:33.123 Sat Sat Sat Saturday Sat Sat Sat Saturday Sat Sat Sat Saturday
+2019-12-31 09:33:33.123 Tue Tue Tue Tuesday Tue Tue Tue Tuesday Tue Tue Tue Tuesday
+2100-01-01 01:33:33.123 Fri Fri Fri Friday Fri Fri Fri Friday Fri Fri Fri Friday
-- !query
-select col, date_format(col, 'F') from v
+select col, date_format(col, 'F'), to_char(col, 'F'), to_varchar(col, 'F') from v
-- !query schema
-struct
+struct
-- !query output
-1582-05-31 19:40:35.123 3
-1969-12-31 15:00:00 3
-1970-12-31 04:59:59.999 3
-1996-03-31 07:03:33.123 3
-2018-11-17 05:33:33.123 3
-2019-12-31 09:33:33.123 3
-2100-01-01 01:33:33.123 1
+1582-05-31 19:40:35.123 3 3 3
+1969-12-31 15:00:00 3 3 3
+1970-12-31 04:59:59.999 3 3 3
+1996-03-31 07:03:33.123 3 3 3
+2018-11-17 05:33:33.123 3 3 3
+2019-12-31 09:33:33.123 3 3 3
+2100-01-01 01:33:33.123 1 1 1
-- !query
-select col, date_format(col, 'd dd') from v
+select col, date_format(col, 'd dd'), to_char(col, 'd dd'), to_varchar(col, 'd dd') from v
-- !query schema
-struct
+struct
-- !query output
-1582-05-31 19:40:35.123 31 31
-1969-12-31 15:00:00 31 31
-1970-12-31 04:59:59.999 31 31
-1996-03-31 07:03:33.123 31 31
-2018-11-17 05:33:33.123 17 17
-2019-12-31 09:33:33.123 31 31
-2100-01-01 01:33:33.123 1 01
+1582-05-31 19:40:35.123 31 31 31 31 31 31
+1969-12-31 15:00:00 31 31 31 31 31 31
+1970-12-31 04:59:59.999 31 31 31 31 31 31
+1996-03-31 07:03:33.123 31 31 31 31 31 31
+2018-11-17 05:33:33.123 17 17 17 17 17 17
+2019-12-31 09:33:33.123 31 31 31 31 31 31
+2100-01-01 01:33:33.123 1 01 1 01 1 01
-- !query
-select col, date_format(col, 'DD') from v where col = timestamp '2100-01-01 01:33:33.123America/Los_Angeles'
+select col, date_format(col, 'DD'), to_char(col, 'DD'), to_varchar(col, 'DD') from v where col = timestamp '2100-01-01 01:33:33.123America/Los_Angeles'
-- !query schema
-struct
+struct
-- !query output
-2100-01-01 01:33:33.123 01
+2100-01-01 01:33:33.123 01 01 01
-- !query
-select col, date_format(col, 'D DDD') from v
+select col, date_format(col, 'D DDD'), to_char(col, 'D DDD'), to_varchar(col, 'D DDD') from v
-- !query schema
-struct
+struct
-- !query output
-1582-05-31 19:40:35.123 151 151
-1969-12-31 15:00:00 365 365
-1970-12-31 04:59:59.999 365 365
-1996-03-31 07:03:33.123 91 091
-2018-11-17 05:33:33.123 321 321
-2019-12-31 09:33:33.123 365 365
-2100-01-01 01:33:33.123 1 001
+1582-05-31 19:40:35.123 151 151 151 151 151 151
+1969-12-31 15:00:00 365 365 365 365 365 365
+1970-12-31 04:59:59.999 365 365 365 365 365 365
+1996-03-31 07:03:33.123 91 091 91 091 91 091
+2018-11-17 05:33:33.123 321 321 321 321 321 321
+2019-12-31 09:33:33.123 365 365 365 365 365 365
+2100-01-01 01:33:33.123 1 001 1 001 1 001
-- !query
-select col, date_format(col, 'H HH') from v
+select col, date_format(col, 'H HH'), to_char(col, 'H HH'), to_varchar(col, 'H HH') from v
-- !query schema
-struct
+struct
-- !query output
-1582-05-31 19:40:35.123 19 19
-1969-12-31 15:00:00 15 15
-1970-12-31 04:59:59.999 4 04
-1996-03-31 07:03:33.123 7 07
-2018-11-17 05:33:33.123 5 05
-2019-12-31 09:33:33.123 9 09
-2100-01-01 01:33:33.123 1 01
+1582-05-31 19:40:35.123 19 19 19 19 19 19
+1969-12-31 15:00:00 15 15 15 15 15 15
+1970-12-31 04:59:59.999 4 04 4 04 4 04
+1996-03-31 07:03:33.123 7 07 7 07 7 07
+2018-11-17 05:33:33.123 5 05 5 05 5 05
+2019-12-31 09:33:33.123 9 09 9 09 9 09
+2100-01-01 01:33:33.123 1 01 1 01 1 01
-- !query
-select col, date_format(col, 'h hh') from v
+select col, date_format(col, 'h hh'), to_char(col, 'h hh'), to_varchar(col, 'h hh') from v
-- !query schema
-struct
+struct
-- !query output
-1582-05-31 19:40:35.123 7 07
-1969-12-31 15:00:00 3 03
-1970-12-31 04:59:59.999 4 04
-1996-03-31 07:03:33.123 7 07
-2018-11-17 05:33:33.123 5 05
-2019-12-31 09:33:33.123 9 09
-2100-01-01 01:33:33.123 1 01
+1582-05-31 19:40:35.123 7 07 7 07 7 07
+1969-12-31 15:00:00 3 03 3 03 3 03
+1970-12-31 04:59:59.999 4 04 4 04 4 04
+1996-03-31 07:03:33.123 7 07 7 07 7 07
+2018-11-17 05:33:33.123 5 05 5 05 5 05
+2019-12-31 09:33:33.123 9 09 9 09 9 09
+2100-01-01 01:33:33.123 1 01 1 01 1 01
-- !query
-select col, date_format(col, 'k kk') from v
+select col, date_format(col, 'k kk'), to_char(col, 'k kk'), to_varchar(col, 'k kk') from v
-- !query schema
-struct
+struct
-- !query output
-1582-05-31 19:40:35.123 19 19
-1969-12-31 15:00:00 15 15
-1970-12-31 04:59:59.999 4 04
-1996-03-31 07:03:33.123 7 07
-2018-11-17 05:33:33.123 5 05
-2019-12-31 09:33:33.123 9 09
-2100-01-01 01:33:33.123 1 01
+1582-05-31 19:40:35.123 19 19 19 19 19 19
+1969-12-31 15:00:00 15 15 15 15 15 15
+1970-12-31 04:59:59.999 4 04 4 04 4 04
+1996-03-31 07:03:33.123 7 07 7 07 7 07
+2018-11-17 05:33:33.123 5 05 5 05 5 05
+2019-12-31 09:33:33.123 9 09 9 09 9 09
+2100-01-01 01:33:33.123 1 01 1 01 1 01
-- !query
-select col, date_format(col, 'K KK') from v
+select col, date_format(col, 'K KK'), to_char(col, 'K KK'), to_varchar(col, 'K KK') from v
-- !query schema
-struct
+struct
-- !query output
-1582-05-31 19:40:35.123 7 07
-1969-12-31 15:00:00 3 03
-1970-12-31 04:59:59.999 4 04
-1996-03-31 07:03:33.123 7 07
-2018-11-17 05:33:33.123 5 05
-2019-12-31 09:33:33.123 9 09
-2100-01-01 01:33:33.123 1 01
+1582-05-31 19:40:35.123 7 07 7 07 7 07
+1969-12-31 15:00:00 3 03 3 03 3 03
+1970-12-31 04:59:59.999 4 04 4 04 4 04
+1996-03-31 07:03:33.123 7 07 7 07 7 07
+2018-11-17 05:33:33.123 5 05 5 05 5 05
+2019-12-31 09:33:33.123 9 09 9 09 9 09
+2100-01-01 01:33:33.123 1 01 1 01 1 01
-- !query
-select col, date_format(col, 'm mm') from v
+select col, date_format(col, 'm mm'), to_char(col, 'm mm'), to_varchar(col, 'm mm') from v
-- !query schema
-struct
+struct
-- !query output
-1582-05-31 19:40:35.123 40 40
-1969-12-31 15:00:00 0 00
-1970-12-31 04:59:59.999 59 59
-1996-03-31 07:03:33.123 3 03
-2018-11-17 05:33:33.123 33 33
-2019-12-31 09:33:33.123 33 33
-2100-01-01 01:33:33.123 33 33
+1582-05-31 19:40:35.123 40 40 40 40 40 40
+1969-12-31 15:00:00 0 00 0 00 0 00
+1970-12-31 04:59:59.999 59 59 59 59 59 59
+1996-03-31 07:03:33.123 3 03 3 03 3 03
+2018-11-17 05:33:33.123 33 33 33 33 33 33
+2019-12-31 09:33:33.123 33 33 33 33 33 33
+2100-01-01 01:33:33.123 33 33 33 33 33 33
-- !query
-select col, date_format(col, 's ss') from v
+select col, date_format(col, 's ss'), to_char(col, 's ss'), to_varchar(col, 's ss') from v
-- !query schema
-struct
+struct
-- !query output
-1582-05-31 19:40:35.123 35 35
-1969-12-31 15:00:00 0 00
-1970-12-31 04:59:59.999 59 59
-1996-03-31 07:03:33.123 33 33
-2018-11-17 05:33:33.123 33 33
-2019-12-31 09:33:33.123 33 33
-2100-01-01 01:33:33.123 33 33
+1582-05-31 19:40:35.123 35 35 35 35 35 35
+1969-12-31 15:00:00 0 00 0 00 0 00
+1970-12-31 04:59:59.999 59 59 59 59 59 59
+1996-03-31 07:03:33.123 33 33 33 33 33 33
+2018-11-17 05:33:33.123 33 33 33 33 33 33
+2019-12-31 09:33:33.123 33 33 33 33 33 33
+2100-01-01 01:33:33.123 33 33 33 33 33 33
-- !query
-select col, date_format(col, 'S SS SSS SSSS SSSSS SSSSSS SSSSSSS SSSSSSSS SSSSSSSSS') from v
+select col, date_format(col, 'S SS SSS SSSS SSSSS SSSSSS SSSSSSS SSSSSSSS SSSSSSSSS'), to_char(col, 'S SS SSS SSSS SSSSS SSSSSS SSSSSSS SSSSSSSS SSSSSSSSS'), to_varchar(col, 'S SS SSS SSSS SSSSS SSSSSS SSSSSSS SSSSSSSS SSSSSSSSS') from v
-- !query schema
-struct
+struct
-- !query output
-1582-05-31 19:40:35.123 1 12 123 1230 12300 123000 1230000 12300000 123000000
-1969-12-31 15:00:00 0 00 000 0000 00000 000000 0000000 00000000 000000000
-1970-12-31 04:59:59.999 9 99 999 9990 99900 999000 9990000 99900000 999000000
-1996-03-31 07:03:33.123 1 12 123 1230 12300 123000 1230000 12300000 123000000
-2018-11-17 05:33:33.123 1 12 123 1230 12300 123000 1230000 12300000 123000000
-2019-12-31 09:33:33.123 1 12 123 1230 12300 123000 1230000 12300000 123000000
-2100-01-01 01:33:33.123 1 12 123 1230 12300 123000 1230000 12300000 123000000
+1582-05-31 19:40:35.123 1 12 123 1230 12300 123000 1230000 12300000 123000000 1 12 123 1230 12300 123000 1230000 12300000 123000000 1 12 123 1230 12300 123000 1230000 12300000 123000000
+1969-12-31 15:00:00 0 00 000 0000 00000 000000 0000000 00000000 000000000 0 00 000 0000 00000 000000 0000000 00000000 000000000 0 00 000 0000 00000 000000 0000000 00000000 000000000
+1970-12-31 04:59:59.999 9 99 999 9990 99900 999000 9990000 99900000 999000000 9 99 999 9990 99900 999000 9990000 99900000 999000000 9 99 999 9990 99900 999000 9990000 99900000 999000000
+1996-03-31 07:03:33.123 1 12 123 1230 12300 123000 1230000 12300000 123000000 1 12 123 1230 12300 123000 1230000 12300000 123000000 1 12 123 1230 12300 123000 1230000 12300000 123000000
+2018-11-17 05:33:33.123 1 12 123 1230 12300 123000 1230000 12300000 123000000 1 12 123 1230 12300 123000 1230000 12300000 123000000 1 12 123 1230 12300 123000 1230000 12300000 123000000
+2019-12-31 09:33:33.123 1 12 123 1230 12300 123000 1230000 12300000 123000000 1 12 123 1230 12300 123000 1230000 12300000 123000000 1 12 123 1230 12300 123000 1230000 12300000 123000000
+2100-01-01 01:33:33.123 1 12 123 1230 12300 123000 1230000 12300000 123000000 1 12 123 1230 12300 123000 1230000 12300000 123000000 1 12 123 1230 12300 123000 1230000 12300000 123000000
-- !query
-select col, date_format(col, 'a') from v
+select col, date_format(col, 'a'), to_char(col, 'a'), to_varchar(col, 'a') from v
-- !query schema
-struct
+struct
-- !query output
-1582-05-31 19:40:35.123 PM
-1969-12-31 15:00:00 PM
-1970-12-31 04:59:59.999 AM
-1996-03-31 07:03:33.123 AM
-2018-11-17 05:33:33.123 AM
-2019-12-31 09:33:33.123 AM
-2100-01-01 01:33:33.123 AM
+1582-05-31 19:40:35.123 PM PM PM
+1969-12-31 15:00:00 PM PM PM
+1970-12-31 04:59:59.999 AM AM AM
+1996-03-31 07:03:33.123 AM AM AM
+2018-11-17 05:33:33.123 AM AM AM
+2019-12-31 09:33:33.123 AM AM AM
+2100-01-01 01:33:33.123 AM AM AM
-- !query
-select col, date_format(col, 'VV') from v
+select col, date_format(col, 'VV'), to_char(col, 'VV'), to_varchar(col, 'VV') from v
-- !query schema
-struct
+struct
-- !query output
-1582-05-31 19:40:35.123 America/Los_Angeles
-1969-12-31 15:00:00 America/Los_Angeles
-1970-12-31 04:59:59.999 America/Los_Angeles
-1996-03-31 07:03:33.123 America/Los_Angeles
-2018-11-17 05:33:33.123 America/Los_Angeles
-2019-12-31 09:33:33.123 America/Los_Angeles
-2100-01-01 01:33:33.123 America/Los_Angeles
+1582-05-31 19:40:35.123 America/Los_Angeles America/Los_Angeles America/Los_Angeles
+1969-12-31 15:00:00 America/Los_Angeles America/Los_Angeles America/Los_Angeles
+1970-12-31 04:59:59.999 America/Los_Angeles America/Los_Angeles America/Los_Angeles
+1996-03-31 07:03:33.123 America/Los_Angeles America/Los_Angeles America/Los_Angeles
+2018-11-17 05:33:33.123 America/Los_Angeles America/Los_Angeles America/Los_Angeles
+2019-12-31 09:33:33.123 America/Los_Angeles America/Los_Angeles America/Los_Angeles
+2100-01-01 01:33:33.123 America/Los_Angeles America/Los_Angeles America/Los_Angeles
-- !query
-select col, date_format(col, 'z zz zzz zzzz') from v
+select col, date_format(col, 'z zz zzz zzzz'), to_char(col, 'z zz zzz zzzz'), to_varchar(col, 'z zz zzz zzzz') from v
-- !query schema
-struct
+struct
-- !query output
-1582-05-31 19:40:35.123 PST PST PST Pacific Standard Time
-1969-12-31 15:00:00 PST PST PST Pacific Standard Time
-1970-12-31 04:59:59.999 PST PST PST Pacific Standard Time
-1996-03-31 07:03:33.123 PST PST PST Pacific Standard Time
-2018-11-17 05:33:33.123 PST PST PST Pacific Standard Time
-2019-12-31 09:33:33.123 PST PST PST Pacific Standard Time
-2100-01-01 01:33:33.123 PST PST PST Pacific Standard Time
+1582-05-31 19:40:35.123 PST PST PST Pacific Standard Time PST PST PST Pacific Standard Time PST PST PST Pacific Standard Time
+1969-12-31 15:00:00 PST PST PST Pacific Standard Time PST PST PST Pacific Standard Time PST PST PST Pacific Standard Time
+1970-12-31 04:59:59.999 PST PST PST Pacific Standard Time PST PST PST Pacific Standard Time PST PST PST Pacific Standard Time
+1996-03-31 07:03:33.123 PST PST PST Pacific Standard Time PST PST PST Pacific Standard Time PST PST PST Pacific Standard Time
+2018-11-17 05:33:33.123 PST PST PST Pacific Standard Time PST PST PST Pacific Standard Time PST PST PST Pacific Standard Time
+2019-12-31 09:33:33.123 PST PST PST Pacific Standard Time PST PST PST Pacific Standard Time PST PST PST Pacific Standard Time
+2100-01-01 01:33:33.123 PST PST PST Pacific Standard Time PST PST PST Pacific Standard Time PST PST PST Pacific Standard Time
-- !query
-select col, date_format(col, 'X XX XXX') from v
+select col, date_format(col, 'X XX XXX'), to_char(col, 'X XX XXX'), to_varchar(col, 'X XX XXX') from v
-- !query schema
-struct
+struct
-- !query output
-1582-05-31 19:40:35.123 -0752 -0752 -07:52
-1969-12-31 15:00:00 -08 -0800 -08:00
-1970-12-31 04:59:59.999 -08 -0800 -08:00
-1996-03-31 07:03:33.123 -08 -0800 -08:00
-2018-11-17 05:33:33.123 -08 -0800 -08:00
-2019-12-31 09:33:33.123 -08 -0800 -08:00
-2100-01-01 01:33:33.123 -08 -0800 -08:00
+1582-05-31 19:40:35.123 -0752 -0752 -07:52 -0752 -0752 -07:52 -0752 -0752 -07:52
+1969-12-31 15:00:00 -08 -0800 -08:00 -08 -0800 -08:00 -08 -0800 -08:00
+1970-12-31 04:59:59.999 -08 -0800 -08:00 -08 -0800 -08:00 -08 -0800 -08:00
+1996-03-31 07:03:33.123 -08 -0800 -08:00 -08 -0800 -08:00 -08 -0800 -08:00
+2018-11-17 05:33:33.123 -08 -0800 -08:00 -08 -0800 -08:00 -08 -0800 -08:00
+2019-12-31 09:33:33.123 -08 -0800 -08:00 -08 -0800 -08:00 -08 -0800 -08:00
+2100-01-01 01:33:33.123 -08 -0800 -08:00 -08 -0800 -08:00 -08 -0800 -08:00
-- !query
-select col, date_format(col, 'XXXX XXXXX') from v
+select col, date_format(col, 'XXXX XXXXX'), to_char(col, 'XXXX XXXXX'), to_varchar(col, 'XXXX XXXXX') from v
-- !query schema
-struct
+struct
-- !query output
-1582-05-31 19:40:35.123 -075258 -07:52:58
-1969-12-31 15:00:00 -0800 -08:00
-1970-12-31 04:59:59.999 -0800 -08:00
-1996-03-31 07:03:33.123 -0800 -08:00
-2018-11-17 05:33:33.123 -0800 -08:00
-2019-12-31 09:33:33.123 -0800 -08:00
-2100-01-01 01:33:33.123 -0800 -08:00
+1582-05-31 19:40:35.123 -075258 -07:52:58 -075258 -07:52:58 -075258 -07:52:58
+1969-12-31 15:00:00 -0800 -08:00 -0800 -08:00 -0800 -08:00
+1970-12-31 04:59:59.999 -0800 -08:00 -0800 -08:00 -0800 -08:00
+1996-03-31 07:03:33.123 -0800 -08:00 -0800 -08:00 -0800 -08:00
+2018-11-17 05:33:33.123 -0800 -08:00 -0800 -08:00 -0800 -08:00
+2019-12-31 09:33:33.123 -0800 -08:00 -0800 -08:00 -0800 -08:00
+2100-01-01 01:33:33.123 -0800 -08:00 -0800 -08:00 -0800 -08:00
-- !query
-select col, date_format(col, 'Z ZZ ZZZ ZZZZ ZZZZZ') from v
+select col, date_format(col, 'Z ZZ ZZZ ZZZZ ZZZZZ'), to_char(col, 'Z ZZ ZZZ ZZZZ ZZZZZ'), to_varchar(col, 'Z ZZ ZZZ ZZZZ ZZZZZ') from v
-- !query schema
-struct
+struct
-- !query output
-1582-05-31 19:40:35.123 -0752 -0752 -0752 GMT-07:52:58 -07:52:58
-1969-12-31 15:00:00 -0800 -0800 -0800 GMT-08:00 -08:00
-1970-12-31 04:59:59.999 -0800 -0800 -0800 GMT-08:00 -08:00
-1996-03-31 07:03:33.123 -0800 -0800 -0800 GMT-08:00 -08:00
-2018-11-17 05:33:33.123 -0800 -0800 -0800 GMT-08:00 -08:00
-2019-12-31 09:33:33.123 -0800 -0800 -0800 GMT-08:00 -08:00
-2100-01-01 01:33:33.123 -0800 -0800 -0800 GMT-08:00 -08:00
+1582-05-31 19:40:35.123 -0752 -0752 -0752 GMT-07:52:58 -07:52:58 -0752 -0752 -0752 GMT-07:52:58 -07:52:58 -0752 -0752 -0752 GMT-07:52:58 -07:52:58
+1969-12-31 15:00:00 -0800 -0800 -0800 GMT-08:00 -08:00 -0800 -0800 -0800 GMT-08:00 -08:00 -0800 -0800 -0800 GMT-08:00 -08:00
+1970-12-31 04:59:59.999 -0800 -0800 -0800 GMT-08:00 -08:00 -0800 -0800 -0800 GMT-08:00 -08:00 -0800 -0800 -0800 GMT-08:00 -08:00
+1996-03-31 07:03:33.123 -0800 -0800 -0800 GMT-08:00 -08:00 -0800 -0800 -0800 GMT-08:00 -08:00 -0800 -0800 -0800 GMT-08:00 -08:00
+2018-11-17 05:33:33.123 -0800 -0800 -0800 GMT-08:00 -08:00 -0800 -0800 -0800 GMT-08:00 -08:00 -0800 -0800 -0800 GMT-08:00 -08:00
+2019-12-31 09:33:33.123 -0800 -0800 -0800 GMT-08:00 -08:00 -0800 -0800 -0800 GMT-08:00 -08:00 -0800 -0800 -0800 GMT-08:00 -08:00
+2100-01-01 01:33:33.123 -0800 -0800 -0800 GMT-08:00 -08:00 -0800 -0800 -0800 GMT-08:00 -08:00 -0800 -0800 -0800 GMT-08:00 -08:00
-- !query
-select col, date_format(col, 'O OOOO') from v
+select col, date_format(col, 'O OOOO'), to_char(col, 'O OOOO'), to_varchar(col, 'O OOOO') from v
-- !query schema
-struct
+struct
-- !query output
-1582-05-31 19:40:35.123 GMT-7:52:58 GMT-07:52:58
-1969-12-31 15:00:00 GMT-8 GMT-08:00
-1970-12-31 04:59:59.999 GMT-8 GMT-08:00
-1996-03-31 07:03:33.123 GMT-8 GMT-08:00
-2018-11-17 05:33:33.123 GMT-8 GMT-08:00
-2019-12-31 09:33:33.123 GMT-8 GMT-08:00
-2100-01-01 01:33:33.123 GMT-8 GMT-08:00
+1582-05-31 19:40:35.123 GMT-7:52:58 GMT-07:52:58 GMT-7:52:58 GMT-07:52:58 GMT-7:52:58 GMT-07:52:58
+1969-12-31 15:00:00 GMT-8 GMT-08:00 GMT-8 GMT-08:00 GMT-8 GMT-08:00
+1970-12-31 04:59:59.999 GMT-8 GMT-08:00 GMT-8 GMT-08:00 GMT-8 GMT-08:00
+1996-03-31 07:03:33.123 GMT-8 GMT-08:00 GMT-8 GMT-08:00 GMT-8 GMT-08:00
+2018-11-17 05:33:33.123 GMT-8 GMT-08:00 GMT-8 GMT-08:00 GMT-8 GMT-08:00
+2019-12-31 09:33:33.123 GMT-8 GMT-08:00 GMT-8 GMT-08:00 GMT-8 GMT-08:00
+2100-01-01 01:33:33.123 GMT-8 GMT-08:00 GMT-8 GMT-08:00 GMT-8 GMT-08:00
-- !query
-select col, date_format(col, 'x xx xxx xxxx xxxx xxxxx') from v
+select col, date_format(col, 'x xx xxx xxxx xxxx xxxxx'), to_char(col, 'x xx xxx xxxx xxxx xxxxx'), to_varchar(col, 'x xx xxx xxxx xxxx xxxxx') from v
-- !query schema
-struct
+struct
-- !query output
-1582-05-31 19:40:35.123 -0752 -0752 -07:52 -075258 -075258 -07:52:58
-1969-12-31 15:00:00 -08 -0800 -08:00 -0800 -0800 -08:00
-1970-12-31 04:59:59.999 -08 -0800 -08:00 -0800 -0800 -08:00
-1996-03-31 07:03:33.123 -08 -0800 -08:00 -0800 -0800 -08:00
-2018-11-17 05:33:33.123 -08 -0800 -08:00 -0800 -0800 -08:00
-2019-12-31 09:33:33.123 -08 -0800 -08:00 -0800 -0800 -08:00
-2100-01-01 01:33:33.123 -08 -0800 -08:00 -0800 -0800 -08:00
+1582-05-31 19:40:35.123 -0752 -0752 -07:52 -075258 -075258 -07:52:58 -0752 -0752 -07:52 -075258 -075258 -07:52:58 -0752 -0752 -07:52 -075258 -075258 -07:52:58
+1969-12-31 15:00:00 -08 -0800 -08:00 -0800 -0800 -08:00 -08 -0800 -08:00 -0800 -0800 -08:00 -08 -0800 -08:00 -0800 -0800 -08:00
+1970-12-31 04:59:59.999 -08 -0800 -08:00 -0800 -0800 -08:00 -08 -0800 -08:00 -0800 -0800 -08:00 -08 -0800 -08:00 -0800 -0800 -08:00
+1996-03-31 07:03:33.123 -08 -0800 -08:00 -0800 -0800 -08:00 -08 -0800 -08:00 -0800 -0800 -08:00 -08 -0800 -08:00 -0800 -0800 -08:00
+2018-11-17 05:33:33.123 -08 -0800 -08:00 -0800 -0800 -08:00 -08 -0800 -08:00 -0800 -0800 -08:00 -08 -0800 -08:00 -0800 -0800 -08:00
+2019-12-31 09:33:33.123 -08 -0800 -08:00 -0800 -0800 -08:00 -08 -0800 -08:00 -0800 -0800 -08:00 -08 -0800 -08:00 -0800 -0800 -08:00
+2100-01-01 01:33:33.123 -08 -0800 -08:00 -0800 -0800 -08:00 -08 -0800 -08:00 -0800 -0800 -08:00 -08 -0800 -08:00 -0800 -0800 -08:00
-- !query
-select col, date_format(col, '[yyyy-MM-dd HH:mm:ss]') from v
+select col, date_format(col, '[yyyy-MM-dd HH:mm:ss]'), to_char(col, '[yyyy-MM-dd HH:mm:ss]'), to_varchar(col, '[yyyy-MM-dd HH:mm:ss]') from v
-- !query schema
-struct
+struct
-- !query output
-1582-05-31 19:40:35.123 1582-05-31 19:40:35
-1969-12-31 15:00:00 1969-12-31 15:00:00
-1970-12-31 04:59:59.999 1970-12-31 04:59:59
-1996-03-31 07:03:33.123 1996-03-31 07:03:33
-2018-11-17 05:33:33.123 2018-11-17 05:33:33
-2019-12-31 09:33:33.123 2019-12-31 09:33:33
-2100-01-01 01:33:33.123 2100-01-01 01:33:33
+1582-05-31 19:40:35.123 1582-05-31 19:40:35 1582-05-31 19:40:35 1582-05-31 19:40:35
+1969-12-31 15:00:00 1969-12-31 15:00:00 1969-12-31 15:00:00 1969-12-31 15:00:00
+1970-12-31 04:59:59.999 1970-12-31 04:59:59 1970-12-31 04:59:59 1970-12-31 04:59:59
+1996-03-31 07:03:33.123 1996-03-31 07:03:33 1996-03-31 07:03:33 1996-03-31 07:03:33
+2018-11-17 05:33:33.123 2018-11-17 05:33:33 2018-11-17 05:33:33 2018-11-17 05:33:33
+2019-12-31 09:33:33.123 2019-12-31 09:33:33 2019-12-31 09:33:33 2019-12-31 09:33:33
+2100-01-01 01:33:33.123 2100-01-01 01:33:33 2100-01-01 01:33:33 2100-01-01 01:33:33
-- !query
-select col, date_format(col, "姚123'GyYqQMLwWuEFDdhHmsSaVzZxXOV'") from v
+select col, date_format(col, "姚123'GyYqQMLwWuEFDdhHmsSaVzZxXOV'"), to_char(col, "姚123'GyYqQMLwWuEFDdhHmsSaVzZxXOV'"), to_varchar(col, "姚123'GyYqQMLwWuEFDdhHmsSaVzZxXOV'") from v
-- !query schema
-struct
+struct
-- !query output
-1582-05-31 19:40:35.123 姚123GyYqQMLwWuEFDdhHmsSaVzZxXOV
-1969-12-31 15:00:00 姚123GyYqQMLwWuEFDdhHmsSaVzZxXOV
-1970-12-31 04:59:59.999 姚123GyYqQMLwWuEFDdhHmsSaVzZxXOV
-1996-03-31 07:03:33.123 姚123GyYqQMLwWuEFDdhHmsSaVzZxXOV
-2018-11-17 05:33:33.123 姚123GyYqQMLwWuEFDdhHmsSaVzZxXOV
-2019-12-31 09:33:33.123 姚123GyYqQMLwWuEFDdhHmsSaVzZxXOV
-2100-01-01 01:33:33.123 姚123GyYqQMLwWuEFDdhHmsSaVzZxXOV
+1582-05-31 19:40:35.123 姚123GyYqQMLwWuEFDdhHmsSaVzZxXOV 姚123GyYqQMLwWuEFDdhHmsSaVzZxXOV 姚123GyYqQMLwWuEFDdhHmsSaVzZxXOV
+1969-12-31 15:00:00 姚123GyYqQMLwWuEFDdhHmsSaVzZxXOV 姚123GyYqQMLwWuEFDdhHmsSaVzZxXOV 姚123GyYqQMLwWuEFDdhHmsSaVzZxXOV
+1970-12-31 04:59:59.999 姚123GyYqQMLwWuEFDdhHmsSaVzZxXOV 姚123GyYqQMLwWuEFDdhHmsSaVzZxXOV 姚123GyYqQMLwWuEFDdhHmsSaVzZxXOV
+1996-03-31 07:03:33.123 姚123GyYqQMLwWuEFDdhHmsSaVzZxXOV 姚123GyYqQMLwWuEFDdhHmsSaVzZxXOV 姚123GyYqQMLwWuEFDdhHmsSaVzZxXOV
+2018-11-17 05:33:33.123 姚123GyYqQMLwWuEFDdhHmsSaVzZxXOV 姚123GyYqQMLwWuEFDdhHmsSaVzZxXOV 姚123GyYqQMLwWuEFDdhHmsSaVzZxXOV
+2019-12-31 09:33:33.123 姚123GyYqQMLwWuEFDdhHmsSaVzZxXOV 姚123GyYqQMLwWuEFDdhHmsSaVzZxXOV 姚123GyYqQMLwWuEFDdhHmsSaVzZxXOV
+2100-01-01 01:33:33.123 姚123GyYqQMLwWuEFDdhHmsSaVzZxXOV 姚123GyYqQMLwWuEFDdhHmsSaVzZxXOV 姚123GyYqQMLwWuEFDdhHmsSaVzZxXOV
-- !query
-select col, date_format(col, "''") from v
+select col, date_format(col, "''"), to_char(col, "''"), to_varchar(col, "''") from v
-- !query schema
-struct
+struct
-- !query output
-1582-05-31 19:40:35.123 '
-1969-12-31 15:00:00 '
-1970-12-31 04:59:59.999 '
-1996-03-31 07:03:33.123 '
-2018-11-17 05:33:33.123 '
-2019-12-31 09:33:33.123 '
-2100-01-01 01:33:33.123 '
+1582-05-31 19:40:35.123 ' ' '
+1969-12-31 15:00:00 ' ' '
+1970-12-31 04:59:59.999 ' ' '
+1996-03-31 07:03:33.123 ' ' '
+2018-11-17 05:33:33.123 ' ' '
+2019-12-31 09:33:33.123 ' ' '
+2100-01-01 01:33:33.123 ' ' '
-- !query
-select col, date_format(col, '') from v
+select col, date_format(col, ''), to_char(col, ''), to_varchar(col, '') from v
-- !query schema
-struct
+struct
-- !query output
-1582-05-31 19:40:35.123
-1969-12-31 15:00:00
-1970-12-31 04:59:59.999
-1996-03-31 07:03:33.123
-2018-11-17 05:33:33.123
-2019-12-31 09:33:33.123
+1582-05-31 19:40:35.123
+1969-12-31 15:00:00
+1970-12-31 04:59:59.999
+1996-03-31 07:03:33.123
+2018-11-17 05:33:33.123
+2019-12-31 09:33:33.123
2100-01-01 01:33:33.123
+
+
+-- !query
+select date_format(date'2023-08-18', 'yyyy-MM-dd'), to_char(date'2023-08-18', 'yyyy-MM-dd'), to_varchar(date'2023-08-18', 'yyyy-MM-dd')
+-- !query schema
+struct
+-- !query output
+2023-08-18 2023-08-18 2023-08-18
+
+
+-- !query
+select date_format(timestamp_ltz'2023-08-18 09:13:14.123456Z', 'yyyy-MM-dd HH:mm:ss.SSSSSSZ'), to_char(timestamp_ltz'2023-08-18 09:13:14.123456Z', 'yyyy-MM-dd HH:mm:ss.SSSSSSZ'), to_varchar(timestamp_ltz'2023-08-18 09:13:14.123456Z', 'yyyy-MM-dd HH:mm:ss.SSSSSSZ')
+-- !query schema
+struct
+-- !query output
+2023-08-18 02:13:14.123456-0700 2023-08-18 02:13:14.123456-0700 2023-08-18 02:13:14.123456-0700
+
+
+-- !query
+select date_format(timestamp_ntz'2023-08-18 09:13:14.123456', 'yyyy-MM-dd HH:mm:ss.SSSSSS'), to_char(timestamp_ntz'2023-08-18 09:13:14.123456', 'yyyy-MM-dd HH:mm:ss.SSSSSS'), to_varchar(timestamp_ntz'2023-08-18 09:13:14.123456', 'yyyy-MM-dd HH:mm:ss.SSSSSS')
+-- !query schema
+struct
+-- !query output
+2023-08-18 09:13:14.123456 2023-08-18 09:13:14.123456 2023-08-18 09:13:14.123456