1

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

ALTER TABLE Tbl1 
ALTER COLUMN [ABC] datetime

谢谢

4

1 回答 1

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")
于 2012-07-19T09:55:47.723 回答