2012-07-19 99 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")