2016-03-21 66 views
2

我正在使用Access DB 2007 - 2010;我试图导入很多CSV文件,但时间戳列无法正确导入。如何将字符串转换为日期并在Access查询中提取值

因此,我将所有的CSV链接到Access数据库,并试图查询所有的表。

我试图从时间戳提取一年的年份和日期(这是目前一个字符串)

我想给Formatdatepart功能相结合,它不断失败。 (它只是说在表中的错误)

format功能本身的作品,但我不能将它与任何东西结合起来。

基本上,我想这样做:

select datepart("y", Format(gmt, "dd-mmm-yyyy hh:nn:ss")) as DOY from Table1; 

,但它失败。我也试过CDateDateValue不同的组合,但都失败了。

有谁知道如何让这个工作?

UPDATE

format功能没有做任何事情。无论我如何格式化,文本都保持不变。

这里有一个日期时间示例:05日 - 12月13 2008年:40:01.955

+0

@HansUp:失败;我添加了日期示例 – djm

+0

@HansUp:OMG!这工作!非常感谢!请添加,作为解决方案,我可以upvote! – djm

回答

1

Access不能在你的日期字符串毫秒应付。

使用Left()排除它们并将结果子串输入CDate()

SELECT CDate(Left(gmt, 20)) AS date_from_string 
FROM Table1; 

一旦你有一个有效的日期/时间值,你可以使用Year(<Date/Time value>)DatePart("yyyy", <Date/Time value>)提取一年。而DatePart("y", <Date/Time value>)会给你一年的一天。