Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/69.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在postgresql中将时间间隔转换为十进制值?_Sql_Date_Casting_Amazon Redshift - Fatal编程技术网

如何在postgresql中将时间间隔转换为十进制值?

如何在postgresql中将时间间隔转换为十进制值?,sql,date,casting,amazon-redshift,Sql,Date,Casting,Amazon Redshift,运行此查询时: SELECT start_date, end_date, end_date-start_date as timediff FROM content_events 我有一张这样的桌子: +---------------------+---------------------+-----------------+ | start_date | end_date | timediff | +-------------

运行此查询时:

SELECT
  start_date,
  end_date,
  end_date-start_date as timediff

FROM content_events
我有一张这样的桌子:

+---------------------+---------------------+-----------------+
| start_date          | end_date            | timediff        |
+---------------------+---------------------+-----------------+
| 2017-03-23 23:00:00 | 2017-04-01 22:00:00 | 8 days 23:00:00 |
+---------------------+---------------------+-----------------+
+---------------------+---------------------+-----------------+
| start_date          | end_date            | timediff        |
+---------------------+---------------------+-----------------+
| 2017-03-23 23:00:00 | 2017-04-01 22:00:00 | 8,96            |
+---------------------+---------------------+-----------------+
但我想得到这样的东西:

+---------------------+---------------------+-----------------+
| start_date          | end_date            | timediff        |
+---------------------+---------------------+-----------------+
| 2017-03-23 23:00:00 | 2017-04-01 22:00:00 | 8 days 23:00:00 |
+---------------------+---------------------+-----------------+
+---------------------+---------------------+-----------------+
| start_date          | end_date            | timediff        |
+---------------------+---------------------+-----------------+
| 2017-03-23 23:00:00 | 2017-04-01 22:00:00 | 8,96            |
+---------------------+---------------------+-----------------+
请注意,我只需要将时间差作为一个带两个小数点的数值

我正在使用PostgreSQL 8.0.2


非常感谢

select
语句工作正常:

(date_part(epoch,end_date)::float - date_part(epoch,start_date)::float)/(24*60*60) as timediff
还有这个:

(extract(epoch from end_date)::float - extract(epoch from start_date)::float)/(24*60*60) as timediff

选择…,从内容事件中提取(从结束日期到开始日期的历元)/(24*60*60)作为时间差你确定这个版本吗?@VaoTsun Yep,这是我得到的:i686 pc linux gnu上的PostgreSQL 8.0.2版本,由GCC GCC(GCC)3.4.2 20041017(Red Hat 3.4.2-6.fc3)编译,红移1.0.1232ah,红移…hi@Abelisto刚刚意识到,在屏幕截图中可以看到,计算在某些日期无法正常工作,使用开始日期:“02/04/17 22:00”和结束日期:“20/05/17 22:00”时,差异不正确。返回时间为78天。注:列“剩余天数”是结束日期和当前日期之间的差值