2012-07-19 130 views
1

導入excel訪問2007時,某個日期字段已成爲文本字段。所以我想在訪問中運行查詢來將這些列數據類型更改爲datetime。如何在sql中傳遞日期格式(「dd-mmm-yyyy」)?更改列數據類型和格式

ALTER TABLE Tbl1 
ALTER COLUMN [ABC] datetime 

感謝

回答

1

如果您從Excel導入的列(字段),它已經結束了在文本格式,你應該很警惕簡單地切換爲日期時間格式。如果Access沒有將其視爲混合數據類型,則Access應該已經將該字段解釋爲DateTime。您應該創建一個新的DateTime列,並以明確的格式更新年份和月份。

讓我們說你的列是MM/DD/YYYY,其中一個方案是:

UPDATE Table SET NewDateTime = Right(DT,4) & "/" & Left(DT,2) & "/" & Mid(DT,4,2) 
WHERE DT Like "##/##/####" 

您不能設置與DDL Format屬性,這是沒有的MS Access以外的相關性。一般來說,我建議您不要在表格中使用Format屬性,最好在表格和報告中進行控制。如果查詢不能按照預期的方式進行,設置格式將不可避免地在某個階段混淆某人。

如果您確實需要設置格式,則必須使用VBA,DAO和TableDef。

Dim db As Database 
Dim tdf As TableDef 
Dim fld As DAO.Field 
Dim prp As Property 
Dim prpName As String 
Dim prpValue As String 
Dim prpType As Long 

    Set db = CurrentDb 
    Set tdf = db.TableDefs("Table1") 
    Set fld = tdf.Fields("ADate") 

    prpName = "Format" 
    prpValue = "yyyy/mm/dd" 
    prpType = dbText 

    On Error Resume Next 
    fld.Properties(prpName) = prpValue 

    If Err.Number = 3270 Then 
     Set prp = fld.CreateProperty(prpName, prpType, prpValue) 
     Err.Clear 
     fld.Properties.Append prp 
    End If 

    Debug.Print fld.Properties("Format")