我有一个 Postres 数据库,想要比较两个时间戳字段。
基本查询:
select t1.valu1, t1.valu2 from table1 as t1 where t1.valu1 == t1.valu2
与时间戳比较:
select t1.valu1, t1.valu2 from table1 as t1
where EXTRACT(EPOCH FROM TIMESTAMP WITH TIME ZONE t1.valu1 )
== EXTRACT(EPOCH FROM TIMESTAMP WITH TIME ZONE t1.valu2 )
value1
的示例值:
'14:50:15'
, '10:50:15'
value2
:
'11:10:15'
, '17:50:15'
我想将 valu1
和 valu2
转换为时间戳,然后进行比较。
// syntax of extract
EXTRACT(EPOCH FROM TIMESTAMP WITH TIME ZONE '20:38:18');
我收到以下格式的错误:
EXTRACT(EPOCH FROM TIMESTAMP WITH TIME ZONE t1.valu2 )
最佳答案
您的示例值是 time
的文本表示形式不是时间戳
:
'14:50:15', '10:50:15', '11:10:15', '17:50:15'
根据后面的评论,假设 text
作为源类型。
将它们转换为时间以消除比较中无关紧要的空白或前导 0 是有意义的。但对于简单的转换,它必须是有效的时间格式:
SELECT valu1, valu2
FROM table1
WHERE valu1::time = valu2::time
如果您确实想比较“作为时间戳”,则需要使用 to_timestamp()
具有匹配的格式模式:
SELECT valu1, valu2
FROM table1
WHERE to_timestamp(valu1, 'HH24:MI:SS')
= to_timestamp(valu2, 'HH24:MI:SS');
但这几乎没有任何意义......
关于php - 将字段转换为时间戳以进行比较,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3179664/