导入excel访问2007时,有些日期字段变成了文本字段。所以我想在访问中运行查询以将这些列的数据类型更改为日期时间。如何在 sql 中传递日期格式(“dd-mmm-yyyy”)?
ALTER TABLE Tbl1
ALTER COLUMN [ABC] datetime
谢谢
乔
导入excel访问2007时,有些日期字段变成了文本字段。所以我想在访问中运行查询以将这些列的数据类型更改为日期时间。如何在 sql 中传递日期格式(“dd-mmm-yyyy”)?
ALTER TABLE Tbl1
ALTER COLUMN [ABC] datetime
谢谢
乔
如果您从 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")