gpt4 book ai didi

sql - PostgreSQL 按时间戳过滤

转载 作者:行者123 更新时间:2023-12-03 23:24:58 26 4
gpt4 key购买 nike

我有一张名为 report 的表看起来像以下;

enter image description here

有哪些类型,

enter image description here

在这里,我试图通过 order_id 更改行过滤和 start_picking_hour . order_id没有问题.但是,当我按 start_picking_hour 过滤时,我什么也做不了。 .

例如,以下代码有效,SQL 管理器显示“受影响的 2 行”;

UPDATE report SET picked_count = 10 WHERE order_id = 168366

但是,我试图同时过滤 order_idstart_picking_hour .我不确定如何按 timestamp 类型过滤.我尝试过的以下查询均无效。每个都返回一条消息“0 行受影响”。
UPDATE report SET picked_count = 10 WHERE order_id = 168366 and
start_picking_hour = TO_TIMESTAMP('2/17/2015 10:12:51 AM','dd-mm-yyyy hh12:mi:ss')

UPDATE report SET picked_count = 10 WHERE order_id = 168366 and
start_picking_hour = TO_TIMESTAMP('2/17/2015 10:12:51','dd-mm-yyyy hh12:mi:ss')

UPDATE report SET picked_count = 10 WHERE order_id = 168366 and
start_picking_hour = TO_TIMESTAMP('2/17/2015 10:12:51 AM','dd-mm-yyyy hh:mi:ss')

UPDATE report SET picked_count = 10 WHERE order_id = 168366 and
start_picking_hour = TO_TIMESTAMP('2/17/2015 10:12:51','dd-mm-yyyy hh:mi:ss')

UPDATE report SET picked_count = 10 WHERE order_id = 168366 and
start_picking_hour = '2/17/2015 10:12:51 AM'

UPDATE report SET picked_count = 10 WHERE order_id = 168366 and
start_picking_hour = 2/17/2015 10:12:51 AM

UPDATE report SET picked_count = 10 WHERE order_id = 168366 and
start_picking_hour = '2/17/2015 10:12:51'

UPDATE report SET picked_count = 10 WHERE order_id = 168366 and
start_picking_hour = 2/17/2015 10:12:51

通过 timestamp 过滤的确切方法是什么?在 WHERE条款?我正在使用 PostgreSQL。

最佳答案

一个 timestamp还包含小数秒(毫秒)。像您正在使用的时间戳文字 ( TO_TIMESTAMP('2/17/2015 10:12:51 AM','dd-mm-yyyy hh12:mi:ss') ) 不包含毫秒。

您可以使用 date_trunc()从时间戳值中“删除”毫秒的函数(它们没有被“删除” - 只是设置为零):

where date_trunc('second', start_picking_hour) = timestamp '2015-02-17 10:12:51'

(与 to_timestamp() 相比,我更喜欢 ANSI 时间戳文字,因为它们编写起来更短、可移植且明确)

请注意,这将阻止在 start_picking_hour 列上使用索引。

如果你不关心毫秒,你可以将你的列定义为 timestamp(0)反而。在这种情况下,永远不会存储毫秒,您可以将该列直接与时间戳文字(不包含毫秒)进行比较。在这种情况下,可以使用该列上的索引。

关于sql - PostgreSQL 按时间戳过滤,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28561217/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com