sql - 在特定时间之前获取时间戳的正确语法是什么?
问题描述
我想从数据库中返回所有时间戳,只要它们在制作当天早上 6 点之前。我试图这样做:
SELECT source_created_at AT TIME ZONE 'US/PACIFIC' FROM time_entry
WHERE source_created_at AT TIME ZONE 'US/PACIFIC' < '06:00:00'::time
但收到此错误:
ERROR: operator does not exist: timestamp without time zone < time without time zone
LINE 2: WHERE source_created_at AT TIME ZONE 'US/PACIFIC' < '06:00:0...
我也尝试过< '06:00:00'
,TIME'06:00:00;
但遇到了同样的错误。我是 SQL 新手,文档在这里没有帮助。
解决方案
您无法将时间戳与时间进行比较。您需要先将时间戳转换为时间:
WHERE (source_created_at AT TIME ZONE 'US/PACIFIC')::time < '06:00:00'::time
从评论中编辑
如果您希望明天早上 6 点之前的所有时间戳在同一时区:
WHERE source_created_at at time zone 'US/PACIFIC'
< current_date at time zone 'US/PACIFIC' + interval '1 day 6 hour'
推荐阅读
- react-native - 如何知道 react-native 事件是否可信
- python - Python plotly Dash 更新/刷新布局
- java - Selenium - 如何点击文本框的空白区域
- ios - 访问“<>”符号内的值
- java - Jackson 为 List 添加了包装器
- android - SmsRetrieverApi 没有收到 Otp
- dart - Fat Arrow 是语法糖——但不要返回
- php - 我们如何保护 URL 从:/Contact-Us.php 到:/Contact-Us.php/">
- arrays - 协助构建 Exchange PowerShell 输出数组
- node.js - 配置项目 ':CordovaLib 时出现问题