更改列数据类型和格式

问题描述 投票:1回答:1

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

ALTER TABLE Tbl1 
ALTER COLUMN [ABC] datetime

谢谢

ms-access ms-access-2007
1个回答
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")
最新问题
© www.soinside.com 2019 - 2024. All rights reserved.