假设我有一个区间
4 days 10:00:00
如何将其转换为小时数(在本例中为106小时)?是否有函数?或者我是否应该咬紧牙关,执行以下操作
extract(days, my_interval) * 24 + extract(hours, my_interval)
um6iljoc1#
select date 'now()' - date '1955-12-15';
下面是计算总天数的简单查询。
brgchamk2#
最简单的方法可能是:
SELECT EXTRACT(epoch FROM my_interval)/3600
plicqrtu3#
如果您需要整数,即天数:
SELECT (EXTRACT(epoch FROM (SELECT (NOW() - '2014-08-02 08:10:56')))/86400)::int
x9ybnkn64#
要获得天数,最简单的方法是:
SELECT EXTRACT(DAY FROM NOW() - '2014-08-02 08:10:56');
据我所知,它将返回相同的结果:
SELECT (EXTRACT(epoch FROM (SELECT (NOW() - '2014-08-02 08:10:56')))/86400)::int;
8wigbo565#
select floor((date_part('epoch', order_time - '2016-09-05 00:00:00') / 3600)), count(*) from od_a_week group by floor((date_part('epoch', order_time - '2016-09-05 00:00:00') / 3600));
::int转换遵循四舍五入的原则,如果您想要不同的结果,例如向下四舍五入,可以使用相应的数学函数,例如floor。
::int
floor
qeeaahzv6#
如果转换表字段:1.定义字段,使其包含秒:
CREATE TABLE IF NOT EXISTS test ( ... field INTERVAL SECOND(0) );
1.记住要强制转换为int否则,一旦间隔很大,你会得到一个令人不快的惊喜:EXTRACT(EPOCH FROM field)::int
EXTRACT(EPOCH FROM field)::int
ki0zmccv7#
如果你想在添加时间间隔后只以日期类型显示你的结果,那么,应该试试这个选择(当前日期+间隔“x天”)::日期;
uxhixvfz8#
我正在使用PostgreSQL 11,我创建了一个函数来获取两个不同时间戳之间的小时数
create function analysis.calcHours(datetime1 timestamp, datetime2 timestamp) returns integer language plpgsql as $$ declare diff interval; begin diff = datetime2 - datetime1; return (abs(extract(days from diff))*24 + abs(extract(hours from diff)))::integer; end; $$;
8条答案
按热度按时间um6iljoc1#
下面是计算总天数的简单查询。
brgchamk2#
最简单的方法可能是:
plicqrtu3#
如果您需要整数,即天数:
x9ybnkn64#
要获得天数,最简单的方法是:
据我所知,它将返回相同的结果:
8wigbo565#
::int
转换遵循四舍五入的原则,如果您想要不同的结果,例如向下四舍五入,可以使用相应的数学函数,例如floor
。qeeaahzv6#
如果转换表字段:
1.定义字段,使其包含秒:
1.记住要强制转换为int否则,一旦间隔很大,你会得到一个令人不快的惊喜:
EXTRACT(EPOCH FROM field)::int
ki0zmccv7#
如果你想在添加时间间隔后只以日期类型显示你的结果,那么,应该试试这个
选择(当前日期+间隔“x天”)::日期;
uxhixvfz8#
我正在使用PostgreSQL 11,我创建了一个函数来获取两个不同时间戳之间的小时数