Oracle中date型別使用注意

ljm0211發表於2012-06-20
'********************************************************************
'* Module             : clsGPCSJOB:GetTime()
'* Author             : HI1\Kevin L Li
'* Function           :
'* Date Created       : 2005-9-26
'* Date Modified      :
'* Maint. Log         :
'********************************************************************
'* Input              :
'* Output             :
'* Process Flow       :
'********************************************************************
Public Function GetTime(ByRef Connection As ADODB.Connection) As String
    Dim rsTime As New ADODB.Recordset
    Dim strSql As String
   
    strSql = "SELECT TO_CHAR(SYSDATE, 'YYYY-MM-DD HH24:MI:SS') FROM dual"
    rsTime.Open strSql, Connection
   
    ''''Modified by HI1/Helen Li on 20040219 for SQL Server to Oracle
   
    'rsTime.Open "select * from OPENQUERY(" & g_cstrLinkedServer & ",'select systime from dual')", objConn
    'Set rsTime = objConn.Execute("select systime from dual")    'Helen Y
   
    ''''End Modified
   
    GetTime = rsTime.Fields(0).Value
''    If Len(GetTime) = 5 Then
''        GetTime = "0" + GetTime
''    End If
    rsTime.Close
End Function

以 上GetTime函式的作用是取得一個資料庫當前時間的字串,而該字串與系統中date格式設定有關,這樣該函式的結果就會受系統影響有不確定性,因 此使用SELECT SYSDATE FROM dual,就可能會出現問題,就是得到的字串在插入資料庫中date型別時格式不符。解決辦法是在取得字串時將它格式化,如下:
SELECT TO_CHAR(SYSDATE, 'YYYY-MM-DD HH24:MI:SS') FROM dual
在 插入資料庫date型別時再用TO_DATE('strDatetime','YYYY-MM-DD HH24:MI:SS')函式將其轉成date型別,其中只要保證兩個格式化字串'YYYY-MM-DD HH24:MI:SS'一致就可以使date型別和系統不相關了。

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/11411056/viewspace-733345/,如需轉載,請註明出處,否則將追究法律責任。

相關文章