Еще один -
# ^-?0*(?:20(?:[0-4][0-9]|5[0-5])|[0-9]{1,3})$
^
-?
0*
(?:
20
(?:
[0-4] [0-9]
|
5 [0-5]
)
|
[0-9]{1,3}
)
$
Это потому, что даты выставляются извне как java.sql.Date
и представляются внутри как число дат начиная с эпохи Unix (1970-01-01).
Ссылки: источник 1 , источник 2 и 3 .
Это в основном создает много проблем при работе с датами до 1970 года, но вы можете попробовать создать udf
с (я не могу поверить, что я пишу это) с внешними библиотеками, которые могут быть в состоянии справиться с этой проблемой, как рекомендовано здесь .
Напоминание: Конечно, необходимо учитывать узкие места в производительности, используя udf
s. Подробнее об этом здесь .
Для получения дополнительной информации о Unix Time вы можете прочитать следующее: