更改列数据类型和格式

时间:2012-07-19 07:06:06

标签: ms-access ms-access-2007

导入excel以访问2007时,某些日期字段已成为文本字段。所以我想在访问中运行查询将这些列数据类型更改为datetime。如何在sql中传递日期格式(“dd-mmm-yyyy”)?

ALTER TABLE Tbl1 
ALTER COLUMN [ABC] datetime

由于

1 个答案:

答案 0 :(得分:1)

如果您从Excel导入了一个列(字段)并且它最终以文本格式结束,那么您应该非常谨慎地简单地切换到日期时间格式。如果没有将字段视为混合数据类型,则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")