You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
[SPARK-32272][SQL] Add SQL standard command SET TIME ZONE
### What changes were proposed in this pull request?
This PR adds the SQL standard command - `SET TIME ZONE` to the current default time zone displacement for the current SQL-session, which is the same as the existing `set spark.sql.session.timeZone=xxx'.
All in all, this PR adds syntax as following,
```
SET TIME ZONE LOCAL;
SET TIME ZONE 'valid time zone'; -- zone offset or region
SET TIME ZONE INTERVAL XXXX; -- xxx must in [-18, + 18] hours, * this range is bigger than ansi [-14, + 14]
```
### Why are the changes needed?
ANSI compliance and supply pure SQL users a way to retrieve all supported TimeZones
### Does this PR introduce _any_ user-facing change?
yes, add new syntax.
### How was this patch tested?
add unit tests.
and locally verified reference doc

Closesapache#29064 from yaooqinn/SPARK-32272.
Authored-by: Kent Yao <[email protected]>
Signed-off-by: Wenchen Fan <[email protected]>
Licensed to the Apache Software Foundation (ASF) under one or more
7
+
contributor license agreements. See the NOTICE file distributed with
8
+
this work for additional information regarding copyright ownership.
9
+
The ASF licenses this file to You under the Apache License, Version 2.0
10
+
(the "License"); you may not use this file except in compliance with
11
+
the License. You may obtain a copy of the License at
12
+
13
+
http://www.apache.org/licenses/LICENSE-2.0
14
+
15
+
Unless required by applicable law or agreed to in writing, software
16
+
distributed under the License is distributed on an "AS IS" BASIS,
17
+
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
18
+
See the License for the specific language governing permissions and
19
+
limitations under the License.
20
+
---
21
+
22
+
### Description
23
+
24
+
The SET TIME ZONE command sets the time zone of the current session.
25
+
26
+
### Syntax
27
+
28
+
```sql
29
+
SETTIME ZONE LOCAL
30
+
SETTIME ZONE 'timezone_value'
31
+
SETTIME ZONE INTERVAL interval_literal
32
+
```
33
+
34
+
### Parameters
35
+
36
+
***LOCAL**
37
+
38
+
Set the time zone to the one specified in the java `user.timezone` property, or to the environment variable `TZ` if `user.timezone` is undefined, or to the system time zone if both of them are undefined.
39
+
40
+
***timezone_value**
41
+
42
+
The ID of session local timezone in the format of either region-based zone IDs or zone offsets. Region IDs must have the form 'area/city', such as 'America/Los_Angeles'. Zone offsets must be in the format '`(+|-)HH`', '`(+|-)HH:mm`' or '`(+|-)HH:mm:ss`', e.g '-08', '+01:00' or '-13:33:33'. Also, 'UTC' and 'Z' are supported as aliases of '+00:00'. Other short names are not recommended to use because they can be ambiguous.
43
+
44
+
***interval_literal**
45
+
46
+
The [interval literal](sql-ref-literals.html#interval-literal) represents the difference between the session time zone to the 'UTC'. It must be in the range of [-18, 18] hours and max to second precision, e.g. `INTERVAL 2 HOURS 30 MINITUES` or `INTERVAL '15:40:32' HOUR TO SECOND`.
0 commit comments