aboutsummaryrefslogtreecommitdiffstats
path: root/yql/essentials/tests/sql/suites/datetime/date_tz_implicit_casts.sql
blob: 07c646c6541839b4e782cddb317f1301a275c1d5 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
PRAGMA warning('disable', '4528');

$fromTypes = {
    "TzDate": "2025-03-19,Europe/Moscow",
    "TzDatetime": "2025-03-19T01:02:03,Europe/Moscow",
    "TzTimestamp": "2025-03-19T01:02:03.456789,Europe/Moscow",
};

$toTypes = [
    "Date",     "Datetime",     "Timestamp",
    "TzDate",   "TzDatetime",   "TzTimestamp",
    "Date32",   "Datetime64",   "Timestamp64",
    "TzDate32", "TzDatetime64", "TzTimestamp64",
];

$allowed = {
    "TzDate": {
        /* - */     /* - */         /* - */
        /* - */     "TzDatetime",   "TzTimestamp",
        /* - */     /* - */         /* - */
        "TzDate32", "TzDatetime64", "TzTimestamp64",
    },
    "TzDatetime": {
        /* - */ /* - */         /* - */
        /* - */ /* - */         "TzTimestamp",
        /* - */ /* - */         /* - */
        /* - */ "TzDatetime64", "TzTimestamp64",
    },
    "TzTimestamp": {
        /* - */ /* - */ /* - */
        /* - */ /* - */ /* - */
        /* - */ /* - */ /* - */
        /* - */ /* - */ "TzTimestamp64",
    },
};

EVALUATE FOR $from IN DictItems($fromTypes) DO BEGIN
    EVALUATE FOR $to IN $toTypes DO BEGIN
        EVALUATE IF DictContains($allowed[$from.0], $to) DO BEGIN
            $callable = Callable(CallableType(0, String, DataType($to)), ($x)->(cast($x as String)));
            $srcType = DataType($from.0);
            SELECT $from.0 || " => " || $to,
                 $callable(Unwrap(CAST($from.1 as $srcType)))
        END DO;
    END DO;
END DO;