2016-12-17 5 views
1

Я играю с некоторыми столами в BigQuery и я получаю эту ошибку:BigQuery ошибка стандарта SQL, недопустимая метка время

Не удается вернуть недопустимое значение временной метки в -62169990264000000 микросекунд относительно эпохи Unix. Диапазон действительных значений временной отметки: [0001-01-1 00:00:00, 9999-12-31 23: 59: 59.999999]

Выполнение запроса в legacysql и сортировка по мере его появления отображается как 0001-11 -29 22:15:36 UTC

Как оно преобразуется в микросекундах?

Это запрос:

#standardSQL 
SELECT 
    birthdate 
FROM 
    X 
WHERE 
    birthdate IS NOT NULL 
ORDER BY 
    birthdate ASC 
+0

показать запрос, который производит ошибки –

+0

изменил детали, добавил прямо сейчас –

ответ

1

полночь 1 января 0001 года (минимально возможное значение временной метки в стандартном SQL) находится в микросекундах по отношению к эпохе UNIX, которая больше, чем -62135596800000000 - 62169990264000000. У меня нет хорошего объяснения поведенческого поведения SQL с этим значением timestamp, но вы можете прочитать о некоторых предложениях по работе с ним в стандартном SQL в this item on the issue tracker. Мы планируем добавить некоторый контент в руководство по миграции об этом поведении временной метки в будущем.

1

** strong text ** Подтвердив, что в BigQuery SQL Наследства

SELECT USEC_TO_TIMESTAMP(-62169990264000000) 

производит 0001-11-29 22:15:36 UTC метка время

, тогда как в BigQuery Стандартного SQL

SELECT TIMESTAMP_MICROS(-62169990264000000) 

производит ошибку: Значение TIMESTAMP вне допустимого диапазона: от 0001-01-01 00: 00: 00.000000 + 00 до 9999-12-31 23: 59: 59.999999 + 00.

How does it get transformed in microseconds?

TIMESTAMP
Вы можете описать типы данных TIMESTAMP или как временные метки UNIX или календарного DateTimes. BigQuery хранит данные TIMESTAMP внутренне как отметку времени UNIX с microsecond precision.

Подробнее о TIMESTAMP типа

Смежные вопросы