StartOf.sql 944 B

12345678910111213141516171819202122232425262728
  1. /* syntax version 1 */
  2. $check = ($arg) -> {
  3. return <|
  4. soyear: DateTime::StartOfYear($arg),
  5. soquarter: DateTime::StartOfQuarter($arg),
  6. somonth: DateTime::StartOfMonth($arg),
  7. soweek: DateTime::StartOfWeek($arg),
  8. soday: DateTime::StartOfDay($arg),
  9. sopt13h: DateTime::StartOf($arg, Interval("PT13H")),
  10. sopt4h: DateTime::StartOf($arg, Interval("PT4H")),
  11. sopt15m: DateTime::StartOf($arg, Interval("PT15M")),
  12. sopt20s: DateTime::StartOf($arg, Interval("PT20S")),
  13. sopt7s: DateTime::StartOf($arg, Interval("PT7S")),
  14. timeofday: DateTime::TimeOfDay($arg),
  15. |>
  16. };
  17. $typeDispatcher = ($row) -> {
  18. $tm = $row.tm;
  19. return <|
  20. explicit: $check(DateTime::Split($tm)),
  21. implicit: $check($tm),
  22. |>;
  23. };
  24. $input = SELECT CAST(ftztimestamp as TzTimestamp) as tm FROM Input;
  25. PROCESS $input USING $typeDispatcher(TableRow());