aboutsummaryrefslogtreecommitdiffstats
path: root/yql/essentials/udfs/common/datetime2/test_bigdates/cases/EndOf.sql
blob: c9f01f41497e5d053d692e4ffb4d6e33b40aad72 (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
/* syntax version 1 */
$check = ($arg) -> {
    return <|
        eoyear:    DateTime::MakeTimestamp64(DateTime::EndOfYear($arg)),
        eoquarter: DateTime::MakeTimestamp64(DateTime::EndOfQuarter($arg)),
        eomonth:   DateTime::MakeTimestamp64(DateTime::EndOfMonth($arg)),
        eoweek:    DateTime::MakeTimestamp64(DateTime::EndOfWeek($arg)),
        eoday:     DateTime::MakeTimestamp64(DateTime::EndOfDay($arg)),
        sopt13h:   DateTime::MakeTimestamp64(DateTime::EndOf($arg, Interval("PT13H"))),
        sopt4h:    DateTime::MakeTimestamp64(DateTime::EndOf($arg, Interval("PT4H"))),
        sopt15m:   DateTime::MakeTimestamp64(DateTime::EndOf($arg, Interval("PT15M"))),
        sopt20s:   DateTime::MakeTimestamp64(DateTime::EndOf($arg, Interval("PT20S"))),
        sopt7s:    DateTime::MakeTimestamp64(DateTime::EndOf($arg, Interval("PT7S"))),
    |>
};

$typeDispatcher = ($row) -> {
    $tm = $row.tm;
    return <|
        explicit: $check(DateTime::Split($tm)),
        implicit: $check($tm),
    |>;
};

$input = SELECT CAST(ftimestamp64 as Timestamp64) as tm FROM Input;

PROCESS $input USING $typeDispatcher(TableRow());