aboutsummaryrefslogtreecommitdiffstats
path: root/yql/essentials/tests/sql/suites/bigdate/date_implicit_casts.sql
blob: 735893aeddbbf0f91857d527fa2b926cc2d1c6ad (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
47
PRAGMA warning('disable', '4528');

$fromTypes = {
    "Date32": "2025-03-19",
    "Datetime64": "2025-03-19T01:02:03Z",
    "Timestamp64": "2025-03-19T01:02:03.456789Z",
};

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

$allowed = {
    "Date32": {
        /* - */     /* - */         /* - */
        /* - */     /* - */         /* - */
        /* - */     "DateTime64",   "Timestamp64",
        "TzDate32", "TzDatetime64", "TzTimestamp64",
    },
    "Datetime64": {
        /* - */ /* - */         /* - */
        /* - */ /* - */         /* - */
        /* - */ /* - */         "Timestamp64",
        /* - */ "TzDatetime64", "TzTimestamp64",
    },
    "Timestamp64": {
        /* - */ /* - */ /* - */
        /* - */ /* - */ /* - */
        /* - */ /* - */ /* - */
        /* - */ /* - */ "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;