2012-09-10 83 views
1

我正在将Excel文件导入到Access 2010中,并且日期字段(CALLDATE)以文本(YYYYMMDD)形式出现。我想使用更新查询来更新新的字段“dateofcall”,但使用日期/时间格式。我试图使用:如何将文本字段转换为Access 2010中的日期/时间字段?

UPDATE tbl_Import SET tbl_Import.dateofcall = CDate([tbl_Import].[CALLDATE]); 

我认为这将是那么简单,但它显示空白与日期格式。我也尝试使用DateSerriel(),但仍然出现错误。有什么建议么?

+1

第一那'yyyymmdd'字符串转换为一个适当的'YYYY-MM-dd'字符串(例如添加短划线),然后执行一个ALTER TABLE来改变字符串字段类型为日期类型。只要字符串** LOOKS **就像一个有效日期一样,访问将自动将字符串转换为实际日期值。 –

+1

@remou:在Access 2010中可以正常工作。简单的1个字符串字段表,两个记录:'2012-03-10'和'20120310'。将字段类型更改为日期/时间,接受警告消息,并且2012-03-10已正确转换为本地'10/03/2012'(通过我的区域设置),并且20120310被禁止为无效。 –

+1

以下是对我有用的东西(@Marc B和@Remou的一小部分)我将下面的公式放在更新部分中,它被接受为日期。格式(右([calldate],2)&“/”&Mid([calldate],5,2)&“/”&Left([calldate],4))' –

回答

2

可以使用左,右和中间字符串函数从字符串的各个部分构造一个日期。

例如:

DateSerial(Left(MyTextDate,4),Mid(MyTextDate,5,2),Right(MytextDate,2)) 

可以使用上面更新查询更新日期类型coulmn 9field)从文本列中的日期。

0

我的日期排在文本看起来像这样:“2013-03-23 00:00:00.0”

我只取左侧10个字符,“2013-03-23”,这使得它如此访问可以识别它是一个日期字段,然后我只是切换格式。

Format(Left([WEEKEND],10),"m/d/yyyy") 
相关问题