如何删除1天前插入的记录

时间:2013-11-22 09:01:44

标签: sql oracle

我在桌子上没有合适的时间戳;是否可以删除1天的日志?

我的列名为SESSION_IN,基本上是VARCHAR数据类型,值类似

2013-10-15 02:10:27.883;1591537355

有没有办法修剪数字;是否可以与“sysdate”标识符进行比较?

此SP应将所有会话ID与当前日期时间进行比较,如果它早于1天,则应删除。

4 个答案:

答案 0 :(得分:0)

您可以忽略时间部分并将日期转换为所需的格式

SYSDATE - to_date('date_col','YYYY-DD-MM') 

然后你就可以进行操作了。

答案 1 :(得分:0)

使用Substring函数从记录中提取日期时间部分,然后使用convert to datetime将其强制转换为datetime,然后最后使用datediff检查它是否是昨天插入的。

中使用所有这些caluses
DELETE FROM table
WHERE ___ query

答案 2 :(得分:0)

对于Oracle,您可以使用以下内容:

SELECT
    TRUNC(to_timestamp(SUBSTR('2013-10-15 02:10:27.883;1591537355',1,
    (
            SELECT
                    instr('2013-10-15 02:10:27.883;1591537355', ';')-1
            FROM
                    dual
    )
    ), 'YYYY-MM-DD HH:MI:SS.FF'))
FROM
    dual;

它只为您提供输入字符串的日期部分。只需减去最后要记录的天数。

答案 3 :(得分:-1)

希望以下查询可以帮助您:

Select Convert(Datetime,Substring('2013-10-15 02:10:27.883;1591537355',1,23)), DateDiff(dd,Convert(Datetime,Substring('2013-10-15 02:10:27.883;1591537355',1,23)),Getdate())