2013-11-22 43 views
0

我没有在表中具有正确的时间戳记录;是否可以删除1天前的日志?如何删除其插入1天前

我有列名作为SESSION_IN这基本上是一个数据类型VARCHAR,并且该值会像

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

是否有任何方式后修剪的数量;是否有可能与“sysdate”标识符进行比较?

该SP应该比较所有与当前日期时间的会话ID,如果是旧的然后用1一天,它应该删除。

回答

0

可以igonre一部分时间和日期转换成需要的格式财产以后这样

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

然后就可以进行操作。

+0

感谢Pravin,我得到“ORA-01830:日期格式图片在转换整个输入字符串之前结束”错误。 –

+0

选择TRUNC(SYSDATE - (TO_DATE(SUBSTR( '2013-10-15 02:10:27.883; 1591537355',1,10), 'YYYY-MM-DD')))从双 –

+0

上述查询是给我38天。希望这是你想要的 –

-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()) 
+0

非常感谢您响应:) 因为我想这个功能对于Oracle 10g,其抛出的错误: ORA-00923:FROM关键字未找到预期 请建议我有什么我需要改变? –

+0

对不起不知道甲骨文在MSSQL我的工作。 – Snehal

+0

其确定。感谢你这么多:) –

0

使用子字符串函数提取记录中的日期时间部分,然后用转换为datetime它转换为日期时间,最后用DATEDIFF检查它是否是昨天插入。使用所有这些caluses在

DELETE FROM table 
WHERE ___ query 
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; 

它给你只是你输入的字符串的日期部分。只需减去最后登录的天数即可。