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