Github user ueshin commented on a diff in the pull request:
https://github.com/apache/spark/pull/16308#discussion_r97482071
--- Diff:
sql/core/src/test/scala/org/apache/spark/sql/DateFunctionsSuite.scala ---
@@ -103,6 +153,51 @@ class DateFunctionsSuite extends QueryTest with
SharedSQLContext {
Row("2015", "2015", "2013"))
}
+ test("date format with session local timezone") {
+ val df = Seq((d, sdf.format(d), ts)).toDF("a", "b", "c")
+
+ // The child of date_format is implicitly casted to TimestampType with
session local timezone.
+ //
+ // +---+---------------------+-------------+---------------------+
+ // | | df | timestamp | date_format |
+ // +---+---------------------+-------------+---------------------+
+ // | a | 16533|1428476400000|"2015-04-08 00:00:00"|
+ // | b |"2015-04-08 13:10:15"|1428523815000|"2015-04-08 13:10:15"|
--- End diff --
Do you mean you are wondering why `sdf.format(d)` has the time info
`13:10:15` ?
If so, `java.sql.Date` DOES have the time info if it was initialized with
the constructor `Date(long date)` or even if it was initalized with the
constructor `Date(int year, int month, int day)` or with `Date.valueOf(String
s)`, it has the time info `00:00:00` of the day in the timezone
`TimeZone.getDefault()`.
```scala
scala> TimeZone.setDefault(TimeZone.getTimeZone("GMT"))
scala> val gmtDate = Date.valueOf("2017-01-24")
gmtDate: java.sql.Date = 2017-01-24
scala> val gmtTime = gmtDate.getTime
gmtTime: Long = 1485216000000
scala> TimeZone.setDefault(TimeZone.getTimeZone("PST"))
scala> val pstDate = Date.valueOf("2017-01-24")
pstDate: java.sql.Date = 2017-01-24
scala> val pstTime = pstDate.getTime
pstTime: Long = 1485244800000
scala> val sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss")
sdf: java.text.SimpleDateFormat = java.text.SimpleDateFormat@4f76f1a0
scala> sdf.setTimeZone(TimeZone.getTimeZone("GMT"))
scala> sdf.format(gmtTime)
res12: String = 2017-01-24 00:00:00
scala> sdf.format(pstTime)
res13: String = 2017-01-24 08:00:00
scala> val d = new Date(sdf.parse("2015-04-08 13:10:15").getTime)
d: java.sql.Date = 2015-04-08
scala> sdf.format(d)
res14: String = 2015-04-08 13:10:15
```
---
If your project is set up for it, you can reply to this email and have your
reply appear on GitHub as well. If your project does not have this feature
enabled and wishes so, or if the feature is enabled but not working, please
contact infrastructure at [email protected] or file a JIRA ticket
with INFRA.
---
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]