Ms access 更改列数据类型和格式
将excel导入access 2007时,某些日期字段已变为文本字段。所以我想在access中运行查询,将这些列的数据类型更改为datetime。如何在sql中传递日期格式(“dd-mmm-yyyy” 谢谢Ms access 更改列数据类型和格式,ms-access,ms-access-2007,Ms Access,Ms Access 2007,将excel导入access 2007时,某些日期字段已变为文本字段。所以我想在access中运行查询,将这些列的数据类型更改为datetime。如何在sql中传递日期格式(“dd-mmm-yyyy” 谢谢 Joe如果您从Excel导入了一个列(字段),并且该列以文本格式结束,那么您应该非常小心,不要简单地切换到日期时间格式。如果Access没有将该字段视为混合数据类型,则应该已经将其解释为DateTime。您应该创建一个新的DateTime列,并以明确的格式使用年、月、日对其进行更新 假设您的
Joe如果您从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")
如果您从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")