当前位置: 首页 > 知识库问答 >
问题:

使用EPOCH时间为时间戳获取1分钟内的记录

甘明朗
2023-03-14

从test1中选择(Sold_date-to_date('1970-01-01 00:00:00','yyyy-mm-dd hh24:mi:ss'))*86400作为epoch_sold_date;

共有1个答案

花玄裳
2023-03-14

什么是sold_date?对于例如sysdate(返回datedatatype的函数),代码工作正常。

SQL> select (sysdate
  2          - to_date('1970-01-01 00:00:00','YYYY-MM-DD HH24:MI:SS')
  3         ) * 86400 as epoch_sold_date
  4  from dual;

EPOCH_SOLD_DATE
---------------
     1600807918

SQL>

由于sold_date是一个时间戳,但是--您似乎对一秒钟的分数不感兴趣或不感兴趣,因此将其强制转换为date:

select (cast (systimestamp as date)                                --> this
        - to_date('1970-01-01 00:00:00','YYYY-MM-DD HH24:MI:SS')
       ) * 86400 as epoch_sold_date 
from dual;

如果您对所有行都得到相同的结果:嗯,我没有,如果sold_date不同,您也不应该这样做。

SQL> with test (sold_date) as
  2    (select timestamp '2020-09-22 00:00:00.000000' from dual union all
  3     select timestamp '2015-03-18 00:00:00.000000' from dual
  4    )
  5  select sold_date,
  6         (cast (sold_date as date)
  7          - to_date('1970-01-01 00:00:00','YYYY-MM-DD HH24:MI:SS')
  8         ) * 86400 as epoch_sold_date
  9  from test;

SOLD_DATE                      EPOCH_SOLD_DATE
------------------------------ ---------------
22.09.20 00:00:00,000000000         1600732800
18.03.15 00:00:00,000000000         1426636800

SQL>
SQL> with test (sold_date) as
  2    (select timestamp '2020-09-22 10:15:00.000000' from dual union all
  3     select timestamp '2015-03-18 08:05:00.000000' from dual
  4    )
  5  select sold_date,
  6         lead(sold_date) over (order by sold_date) next_sold_date,
  7         --
  8         lead(sold_date) over (order by sold_date) - sold_date diff,
  9         --
 10         extract(day from lead(sold_date) over (order by sold_date) - sold_date) diff_mins
 11  from test
 12  order by sold_date;

SOLD_DATE                      NEXT_SOLD_DATE                 DIFF                            DIFF_MINS
------------------------------ ------------------------------ ------------------------------ ----------
18.03.15 08:05:00,000000000    22.09.20 10:15:00,000000000    +000002015 02:10:00.000000000        2015
22.09.20 10:15:00,000000000

SQL>
    null
SQL> with test (date_1, date_2) as
  2    (select timestamp '2020-09-22 10:15:00.000000',
  3            timestamp '2020-09-22 08:05:00.000000' from dual
  4    )
  5  select (cast(date_1 as date) - cast(date_2 as date)) * 24 * 60 diff_minutes
  6  from test;

DIFF_MINUTES
------------
         130

SQL>
 类似资料:
  • 我想将存储在GCS中的Avro文件中的数据加载到大查询表中。avro中的两个字段具有datetimc 我有几个字段的Avro文件,其中一个字段具有具有Long类型的Epoch时间值。对于该字段,我希望在使用命令行工具或控制台将Avro文件数据加载到Bigquery表时以“时间戳”格式加载值。例如:我有一个具有值1614004223589的列,我希望该值使用命令行工具或控制台2021-02-22 1

  • 问题内容: 我有一列称为“ s_timestamp”。 如何返回时间戳中具有当天的所有记录? 例如, 我想要以下输出: 让我知道是否不清楚。 问题答案: 只是使用。例如 日期() CURDATE()

  • 问题内容: Iam试图弄清楚数据是在大约5分钟内保存到数据库的。 是Unix时间戳(1970年以来的毫秒)。 不起作用,我得到null而不是0,如果我使用 要执行操作,代码不会进入循环。 我也试过了 问题答案: Current_timestamp以SQL TIMESTAMP(而不是UNIX时间戳)的形式返回当前日期,因此您必须使用unix_timestamp函数进行转换: 编辑: 由于您的列中包含

  • 问题内容: 我最近了解到oracle具有对我来说非常有用的功能-因为设计者/实现者不太在意数据历史记录- 我可以查询记录的历史状态(如果它在oracle缓存中仍然可用),如下所示: 但是现在我需要检查范围内的历史数据。使用缓存是否有可能? 问题答案: 是的,像这样: 请注意,您可以走多远受UNDO_RETENTION参数的限制,通常为几小时而不是几天。

  • 我选择“无时区”是因为我知道我的应用程序使用的所有时间戳总是UTC。就我得到的文档而言,“with timestamp”的唯一区别是,我可以提供其他时区的值,然后将其转换为UTC。然而,我想避免这样的自动转换,因为如果我知道我的值是UTC,它们几乎没有任何好处。 当我在测试表中添加新记录并使用pgAdmin查看表的内容时,我可以看到插入日期已正确地保存为UTC格式。 但是,当我尝试使用JDBC选择

  • 问题内容: 我有一个表,该表在sqlite3中有一个带有时间戳的列。默认为,这样当插入行时,将插入当前时间。现在,我试图获取两天或更早之前插入的行。我想知道这是否有意义。 阅读我想到的文档: 但是显然那是错误的。我提出此查询,是因为它类似于我在实际代码中进行测试的方式: 。 但是我希望sqlite3包含一些针对这种情况的内置检查。 谢谢,我感谢您的任何答复。 编辑 :弄清楚了: 如果有人能提出更好