Teradata SQL: Какой формат даты у Teradata?(что будет иметь лучшую производительность запросов?) - PullRequest
0 голосов
/ 20 июня 2019

Так что я аналитик данных и всегда работаю с различными диапазонами дат в своих выборках данных (я не думаю, что это так).

Обычно я передаю даты как целое число в Teradata, где 6-Jun-2019 будет передаваться как 1190606. В противном случае наша база данных Teradata поддерживает дату прохода в виде строки как «2019-06-06».

Недавно один из наших администраторов заявил, что проходные даты в виде целого числа могут ухудшить производительность.Поэтому мне интересно, какой самый эффективный способ передачи дат в Teradata?Какой способ обеспечит наилучшую производительность запросов?

Спасибо.

1 Ответ

3 голосов
/ 21 июня 2019

1190606 является внутренним форматом хранения данных Teradata DATE, который рассчитывается с использованием

(year - 1900) * 10000 + (month * 100) + day

Конечно, его использование не приведет к снижению производительности, но это не выглядит как правильная дата, если вы не знаете формулу. Попробуйте написать 1899-03-31: -)

Не используйте '2019-06-06', который является просто строкой и будет автоматически перенесен на дату, основанную на FORMAT целевого столбца. Таким образом, может произойти сбой при изменении этого формата.

Существует только один рекомендуемый способ написания DATE с использованием стандартного литерала SQL DATE, который поддерживает только формат YYYY-MM-DD:

DATE '2019-06-06'

Аналогично для TIME '12:34:56.12' и TIMESTAMP '2019-06-06 12:34:56.12'

...