上个月的Oracle纪元日期函数

时间:2019-02-14 08:38:45

标签: sql oracle powerbi

我的表带有EPOCH日期系统,我只想选择上个月的数据。我已经用谷歌搜索了很多,但是我发现的唯一结果与日期时间系统有关。你能帮忙吗?

我将使用此SQL查询将数据导入Power BI。

2 个答案:

答案 0 :(得分:1)

您可以将Unix纪元(自1970年1月1日以来的秒数)转换为日期,如下所示:

TO_DATE('01/01/1970', 'dd/mm/yyyy') + epoch_column / 60 / 60 / 24

该部门将纪元转换为可以添加到原始日期的天数。

如果要在上个月进行过滤,则:

TO_DATE('01/01/1970', 'dd/mm/yyyy') + epoch_column / 60 / 60 / 24
    BETWEEN ADD_MONTHS(TRUNC(sysdate, 'mm'), -1) 
    AND LAST_DAY(ADD_MONTHS(TRUNC(sysdate, 'mm'), -1))

或者更好:

epoch_column 
    BETWEEN
        ( 
            ADD_MONTHS(TRUNC(sysdate, 'mm'), -1) 
            - TO_DATE('01/01/1970', 'dd/mm/yyyy')
        ) * 60 * 60 * 24
    AND (
            LAST_DAY(ADD_MONTHS(TRUNC(sysdate, 'mm'), -1)) 
            - TO_DATE('01/01/1970', 'dd/mm/yyyy')
        ) * 60 * 60 * 24

此解决方案应该更有效,因为不会对要过滤的列执行任何操作,因此它应该能够利用epoch_column上的现有索引。

答案 1 :(得分:1)

您可以使用RSSI=` chat -V -s '' 'AT+csq' 'OK' > /dev/ttyUSB3 < /dev/ttyUSB3 | sed 's/[^0-9]*//g' ` echo $RSSI convert your date range to an epoch(假设您的纪元自1970年以来以秒为单位)。

您要查找的值大于或等于上个月初和本月初之前的值:

( date_to_convert - DATE '1970-01-01' ) * 24 * 60 * 60

如果使用上个月最后一天的午夜作为上限,那么您将错过该天的但午夜之后的所有值。