EndOf.sql 1.1 KB

123456789101112131415161718192021222324252627
  1. /* syntax version 1 */
  2. $check = ($arg) -> {
  3. return <|
  4. eoyear: DateTime::MakeTimestamp64(DateTime::EndOfYear($arg)),
  5. eoquarter: DateTime::MakeTimestamp64(DateTime::EndOfQuarter($arg)),
  6. eomonth: DateTime::MakeTimestamp64(DateTime::EndOfMonth($arg)),
  7. eoweek: DateTime::MakeTimestamp64(DateTime::EndOfWeek($arg)),
  8. eoday: DateTime::MakeTimestamp64(DateTime::EndOfDay($arg)),
  9. sopt13h: DateTime::MakeTimestamp64(DateTime::EndOf($arg, Interval("PT13H"))),
  10. sopt4h: DateTime::MakeTimestamp64(DateTime::EndOf($arg, Interval("PT4H"))),
  11. sopt15m: DateTime::MakeTimestamp64(DateTime::EndOf($arg, Interval("PT15M"))),
  12. sopt20s: DateTime::MakeTimestamp64(DateTime::EndOf($arg, Interval("PT20S"))),
  13. sopt7s: DateTime::MakeTimestamp64(DateTime::EndOf($arg, Interval("PT7S"))),
  14. |>
  15. };
  16. $typeDispatcher = ($row) -> {
  17. $tm = $row.tm;
  18. return <|
  19. explicit: $check(DateTime::Split($tm)),
  20. implicit: $check($tm),
  21. |>;
  22. };
  23. $input = SELECT CAST(ftimestamp64 as Timestamp64) as tm FROM Input;
  24. PROCESS $input USING $typeDispatcher(TableRow());