在sql msaccess中将年和周转换为日期

在sql msaccess中将年和周转换为日期,sql,ms-access,ms-access-2010,Sql,Ms Access,Ms Access 2010,如何在sql中将文本转换为日期,如下所示 Y12-W01至20102 Y12-W02至20109 Y12-W03至20116 等等 我使用ms access 先谢谢你 问候。我认为最简单的方法是制作一个日期表,每周一行。一个字段是源格式Y12-W01,第二个字段是结果日期20102。将源数据连接到此表的第一个字段中,并在进一步的sql或查询中使用第二个字段作为日期。从字段中解析您的周和年。我会让你弄明白的;o) 有了周和年后,将其传递到此函数: Function GetWeekStart(wee

如何在sql中将文本转换为日期,如下所示

Y12-W01至20102

Y12-W02至20109

Y12-W03至20116

等等

我使用ms access

先谢谢你
问候。

我认为最简单的方法是制作一个日期表,每周一行。一个字段是源格式Y12-W01,第二个字段是结果日期20102。将源数据连接到此表的第一个字段中,并在进一步的sql或查询中使用第二个字段作为日期。

从字段中解析您的周和年。我会让你弄明白的;o)

有了周和年后,将其传递到此函数:

Function GetWeekStart(weekNum As Integer, yr As Integer) As Date

    GetWeekStart = DateSerial(yr, 1, 1 + (weekNum * 7) - 6 - Weekday(DateValue("1/1/" & yr)))

End Function 

您不需要单独的函数,请尝试以下SQL示例:

SELECT FieldName, DateAdd("ww",CDbl(Mid([FieldName],6,2))-1,DateSerial(Mid([FieldName],2,2),1,1)) AS ConvDate
FROM TableName

这就是我所做的,但是有任何sql来转换它吗?你说的“转换它”是什么意思?是否要更改源表中的数据?或者您是否需要一个包含20120102日期格式的新表?是的,源数据是Y12-W03,我想将其更改为20120102您是否使用了更新查询?这将是最直接的——如果您需要SQL代码,您可以编写更新查询,然后查看它生成的SQL代码。对于更新查询,只需连接两个表,在源数据中指定日期字段,并将转换后的日期字段放在查询网格的“update to”行中。我不这么认为-Yxx Wxx格式似乎不是标准的日期格式,也不能完全转换为yymmdd格式,因为周数中没有指定日期。我认为您需要一个表来获取适当的yymmdd值,如果确实需要将其存储在源表中,还需要一个更新查询来将其放回源表中。