【问题标题】:Select timestamp range in SQL在 SQL 中选择时间戳范围
【发布时间】:2018-03-22 02:33:21
【问题描述】:

我正在尝试在 SQL postgres 中选择特定日期范围内的特定时间范围。请参阅下面的代码,它会在“10:00:00”上给出错误。 每列的数据类型为: “余额”的数字, “货币”的字符变化(255), “created_at”的无时区时间戳(例如:2018-03-20 00:00:00)。

我尝试了这个链接但没有成功。 MySQL select based on daily timestamp range

SELECT SUM(bl.balance) AS balance, bl.currency, bl.created_at
  FROM balance_logs bl
  WHERE bl.balance_scope = 'system' AND
        created_at >= CURRENT_DATE - 2 AND
        created_at < CURRENT_DATE AND
        created_at BETWEEN '10:00:00' AND '11:00:00'
  GROUP BY bl.currency, bl.created_at
  ORDER BY created_at DESC

【问题讨论】:

  • 请编辑您的问题(标签下方有一个edit 按钮)并在表格中包含对列的描述,以及每个列的数据类型。谢谢。

标签: sql postgresql timestamp


【解决方案1】:

比较需要作为时间:

SELECT SUM(bl.balance) AS balance, bl.currency, bl.created_at
FROM balance_logs bl
WHERE bl.balance_scope = 'system' AND
      created_at >= CURRENT_DATE - 2 AND
      created_at < CURRENT_DATE AND
      created_at::time BETWEEN '10:00:00'::time AND '11:00:00'::time
GROUP BY bl.currency, bl.created_at
ORDER BY created_at DESC;

但是,我认为最好将WHERE 条件写为:

      extract(hour from created_at) = 10

【讨论】:

  • @gordinlinoff 谢谢。我想知道是否可以只修改时间戳的一部分,你教我是的。谢谢
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-04-27
  • 1970-01-01
  • 1970-01-01
  • 2011-11-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多