2013-11-22 42 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; 

它給你只是你輸入的字符串的日期部分。只需減去最後登錄的天數即可。