将存储为文本的长日期转换为短日期Access SQL

时间:2014-06-29 16:21:20

标签: sql date ms-access

我正在尝试通过MS Access SQL将存储为文本的长日期转换为短日期。

例如,我有一个表从网站解析信息,其中一个字段是2014年6月17日星期二。我想在另一个表中运行更新查询,该表获取此值并将其转换为17/06 / 2014。

有关我可以使用哪些功能的任何帮助吗?

感谢

埃尔顿

3 个答案:

答案 0 :(得分:2)

日期字符串如" 2014年6月17日星期二"像这样的VBA函数

Option Compare Database
Option Explicit

Public Function ParseDateString(DateString As Variant) As Variant
    If IsNull(DateString) Then
        ParseDateString = Null
    Else
        ParseDateString = CDate(Split(DateString, ", ", 2)(1))
    End If
End Function

会将字符串转换为真实的Date值。如果您正在运行更新查询并将结果值放入表格中的Date/Time字段,那么您不要想要将日期转换为dd/mm/yyyy格式。只需使用函数的结果(真正的日期值)。

如果必须将日期转换为字符串,请使用明确的日期格式yyyy-mm-dd。如果您转换为dd/mm/yyyy格式,Access可能会导致模糊日期,而12/06/2014可能会被解释为12月6日,不是 6月12日。

答案 1 :(得分:1)

建立在@ VBlades'假设其他年份可能出现在源数据中,但允许年份与2014年不同。

只有在您要解析的日期一致时才会生效。

将此函数粘贴到vba模块中并从查询中调用它。

Function dateParser(datestr As String) As Variant
Dim day_month, year, day_month_year As String
day_month = Split(datestr, ",")(1) 
year = Split(datestr, ",")(2)
day_month_year = day_month + ", " + year 
dateParser = Format(day_month_year, "dd/mm/yyyy")  
End Function

答案 2 :(得分:0)

尝试:

Format(Split("Tuesday, June 17, 2014", ",")(1), "dd/mm/yyyy")