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