StartOf.sql 720 B

12345678910111213141516171819202122
  1. /* syntax version 1 */
  2. $check = ($arg) -> {
  3. return <|
  4. soyear: DateTime::MakeTimestamp64(DateTime::StartOfYear($arg)),
  5. soquarter: DateTime::MakeTimestamp64(DateTime::StartOfQuarter($arg)),
  6. somonth: DateTime::MakeTimestamp64(DateTime::StartOfMonth($arg)),
  7. soweek: DateTime::MakeTimestamp64(DateTime::StartOfWeek($arg)),
  8. soday: DateTime::MakeTimestamp64(DateTime::StartOfDay($arg)),
  9. |>
  10. };
  11. $typeDispatcher = ($row) -> {
  12. $tm = $row.tm;
  13. return <|
  14. explicit: $check(DateTime::Split($tm)),
  15. implicit: $check($tm),
  16. |>;
  17. };
  18. $input = SELECT CAST(ftimestamp64 as Timestamp64) as tm FROM Input;
  19. PROCESS $input USING $typeDispatcher(TableRow());