如何检查 SQL 中的 TIMESTAMP 格式?

How to check TIMESTAMP format in SQL?

检查具有类似于 TIMESTAMP_NTZ 的值的 JSON 的 VARIANT TYPE 是否具有正确格式的最佳方法是什么?

例如,这是我想要的正确格式

 2020-12-26T12:12:11.215581Z

但有时它在数据库中看起来不一样,就像这样

2021-11-26T12:12:11.215581Z[UTC]

我想检测与参考格式不同的记录。

我尝试使用简单的 LIKE,但它忽略了可能与此不同的格式。

LIKE '%[UTC]%'

如果您要检测的所有记录都出现在格式的末尾之外,那么您可以使用长度。

基本上:

WHERE NOT len(column_name)=27

27 因为您的正确格式 2020-12-26T12:12:11.215581Z 有 27 个字符。

您可以使用正则表达式来检查所需格式的相等性。如果 rdbms 已知,我将扩展此答案。

[0-9]{4}-[0-9]{2}-[0-9]{2}T[0-9]{2}:[0-9]{2}:[0-9]{2}\.[0-9]{6}Z

MySQL & SQLite:

SELECT * FROM table 
WHERE timestamp not REGEXP '[0-9]{4}-[0-9]{2}-[0-9]{2}T[0-9]{2}:[0-9]{2}:[0-9]{2}\.[0-9]{6}Z';

甲骨文:

SELECT * FROM table 
WHERE not REGEXP_LIKE(timestamp, '[0-9]{4}-[0-9]{2}-[0-9]{2}T[0-9]{2}:[0-9]{2}:[0-9]{2}\.[0-9]{6}Z');