У меня есть запрос в teradata, где я пытаюсь получить номер недели с определенной даты в формате yyyymmdd (20160201). У нас есть календарная таблица (а не Teradata один, потому что мы считаем неделю немного по-другому), которая позволяет объединить дату и экспортировать результатыРасчет недели Терадата
Когда я выполнить запрос со статическими датами поэтому для примера ниже работает отлично
FROM table_main AL1
JOIN cal_table cal
ON AL1.run_date = cal.cal_dateyyyymmdd
WHERE AL1.run_date >= 20160201
AND AL1.run_date < 20160220
Когда я пытаюсь обобщить заявление на прошлой неделе
FROM table_main AL1
JOIN cal_table cal
ON AL1.run_date = cal.cal_dateyyyymmdd
WHERE AL1.run_date >= CAST(CAST(((DATE-DAYOFWEEK(DATE)-5) (FORMAT 'YYYYMMDD')) AS CHAR(8)) AS INT)
AND AL1.run_date < CAST(CAST(((DATE-DAYOFWEEK(DATE)+ 1) (FORMAT 'YYYYMMDD')) AS CHAR(8)) AS INT)
Я получаю ошибку
SELECT Failed. 3706: Syntax error: expected something between ')' and '-'.
Кто-нибудь когда-либо видел это раньше?
Спасибо @dnoeth. это то, что я искал. Я также обнаружил, что могу полностью удалить таблицу и использовать 'week (cast ((run_date - 19000000) AS DATE)) как week_num', который, похоже, работает –
@JohnSmith:' week' - это еще одна функция ODBC, и я сомневаюсь, что она всегда возвращается правильный номер. Если вам нужны недели ISO, то WEEKNUMBER_OF_YEAR может быть тем, что вы хотите, есть опция «ISO». – dnoeth
OK, большое спасибо. Я не понимал –