3

我在 MS Access 程序中链接了数十个 MySQL 表。还有十几个查询将这些表拉在一起并以人类的方式提供数据,尤其是将时间戳转换为 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;

这里发生了什么?

问候,亚历克斯

4

2 回答 2

2

查询中的DateAdd()表达式要求 Unix 时间戳的 Date/Time 等价于UTC time

? 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

使用较早的格式...

2012-04-24 19:00:00

因此,现在比较同一时间点的这两种不同表示。

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

如果您希望查询显示带有任何时区偏移量的 UNIX 时间戳,请应​​用该转换来实现。

于 2012-04-05T16:14:12.573 回答
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;
于 2012-04-05T14:17:48.543 回答