将文本转换为日期

时间:2015-03-04 18:34:01

标签: sql ms-access ms-access-2010

我在Access中有一个名为"TempD"

的文本字段

包含如下数据

Mon, Oct 6, 2014 
Mon, Nov 10, 2014

我需要使用SQL将其转换为正确的日期格式,并将其放在字段"Emaildate"

我正在使用下面的SQL查询:

UPDATE MissingT 
SET MissingT.emaildate = format(cdate(Right([tempd],4) & "/" & Mid([tempd],6,3) & "/" & Mid([tempd],9,2)));

但问题是,如果当天是单人/双人,那么TempD字段的长度会有所不同。当天是2位数

(Mon, Nov 10, 2014)

它正在将此文字转换为2014-11-01而不是2014-11-10

知道如何解决这个问题?

2 个答案:

答案 0 :(得分:2)

从日期字符串的开头放弃缩写的日期名称,逗号和空格...

? Mid("Mon, Oct 6, 2014", 5)
 Oct 6, 2014

使用CDate() ...

可以将生成的子字符串直接转换为日期/时间值
? CDate(Mid("Mon, Oct 6, 2014", 5))
10/6/2014 

然后,如果您希望将日期/时间值作为 yyyy / mm / dd 格式的字符串...

? Format(CDate(Mid("Mon, Oct 6, 2014", 5)), "yyyy/mm/dd")
2014/10/06

如果这就是您所追求的,您可以在UPDATE这样的查询中执行此操作...

UPDATE MissingT
SET emaildate = Format(CDate(Mid(tempd, 5)), "yyyy/mm/dd");

答案 1 :(得分:0)

对传递给Date字段的日期值应用Format是没有意义的。

这是如何解决它:

UPDATE 
    MissingT
SET 
    emaildate = DateValue(Mid([tempd], 5))