在MS Access中将时间戳转换为易于阅读的格式

3
我有数十个MySQL表与MS Access程序相关联。还有大约十几个查询将这些表汇集在一起,并以人性化的方式提供数据,特别是将时间戳转换为mm/dd/yyyy格式。
我已经测试了时间戳http://www.unixtimestamp.com/index.php),但下面的代码产生的日期是4/25/2012,而不是正确的4/24/2012。
以下是代码:
SELECT date_promised, DateAdd('s', 1335312000, #1/1/1970#) AS date_promised2 FROM erp_workorder AS t1 WHERE id_primary = 73135;
这里发生了什么事?
问候, Alex

您的日期是以 Unix 时间戳还是日期时间格式存储的呢? - user1191247
这个怎么样?http://excel.tips.net/T002051_Converting_UNIX_Date_Time_Stamps.html - Fionnuala
1
Unix时间戳是以协调世界时(UTC)为基准的。你的代码是否将其转换为本地时区?1335312000在英国是2012年4月24日,但在美国是2012年4月25日。 - Marcus Adams
我知道时间戳是以GMT存储的——这我理解是与UTC相同的吗?话虽如此,我不知道如何在Access中强制执行/检查这一点——这是一个遗留的系统,我们正在将其与新的基于Web的系统集成。我将搜索如何在Access中设置时区编辑| 同事提出了一个很好的观点。Access中的时区可能来自本机。我的设置为:(UTC-06:00)中央时间(美国和加拿大)使用以下内容:时间戳:1335312000 日期(M / D / Y @ h:m:s):04/24/12 @ 7:00:00 pm EST - Alex.Barylski
2个回答

2
DateAdd()表达式在您的查询中请求 Unix 时间戳的日期/时间等效项作为协调世界时(UTC)时间
? DateAdd("s", 1335312000, #1/1/1970#)
4/25/2012 

将格式扩展以明确显示时间。

? Format(DateAdd("s", 1335312000, #1/1/1970#), "yyyy-mm-dd hh:nn:ss")
2012-04-25 00:00:00

当您将时间戳输入到网页上的框中,然后单击“转换”按钮,它会给您返回这个值:
04 / 24 / 12 @ 7:00:00pm EST

Using the earlier format ...

2012-04-24 19:00:00

现在比较一下这同一时间的两个不同表示。

2012-04-25 00:00:00 (UTC)
2012-04-24 19:00:00 (EST)

如果你想让查询显示任何时区的UNIX时间戳和偏移量,请应用该转换使其生效。

0
如果date_promised字段是DATETIME类型,您可以使用 -
SELECT date_promised, DATE_FORMAT(date_promised, '%m/%d/%Y') AS date_promised2
FROM erp_workorder AS t1
WHERE id_primary = 73135;

如果date_promised字段包含Unix时间戳,则可以使用-
SELECT date_promised, DATE_FORMAT(FROM_UNIXTIME(date_promised), '%m/%d/%Y') AS date_promised2
FROM erp_workorder AS t1
WHERE id_primary = 73135;

日期以Unix时间戳存储,而不是MYSQL DATETIME,只是一个普通的整数,在PHP和类似语言中格式化得很好,但出于某种原因,Access想要添加一天:( - Alex.Barylski
澄清一下...这些表以时间戳的形式存储为MySQL表...Access应用程序使用查询/视图将数据带入视野 - 没有更好的词语。查询的SELECT语句必须在Access中完成,而不是在MySQL中完成。 - Alex.Barylski
我认为你可以在MS Access中强制执行非标准查询。如果不行,你可以在MySQL中创建一些视图来生成所需的输出,然后从Access中查询这些视图。 - user1191247
这是一个最后的应急解决方案,理想情况下我希望在Access中完成。 :( - Alex.Barylski

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接