【问题标题】:Converting timestamps to human readable in MS Access在 MS Access 中将时间戳转换为人类可读
【发布时间】:2012-04-19 06:54:39
【问题描述】:

我有几十个 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;

这是怎么回事?

问候, 亚历克斯

【问题讨论】:

  • 您的日期是存储为 unix 时间戳还是日期时间?
  • Unix 时间戳采用 UTC。您的代码是否转换为您当地的时区? 1335312000 在英国是 2012/04/24,但在美国是 2012/04/25。
  • 我知道时间戳存储为 GMT - 我知道这与 UTC 相同吗?话虽如此,我不知道如何在 Access 中强制/检查这一点——它是一个遗留系统,正在与新的基于 Web 的系统集成。我将谷歌在 Access EDIT | 中设置时区同事提出了一个很好的观点。 Access 中的时区可能是从本地计算机中提取的。我的设置为:UTC-06:00)中部时间(美国和加拿大)使用以下内容:时间戳:1335312000 日期(M/D/Y @ h:m:s):04 / 24 / 12 @ 7:00美国东部时间下午 00 点

标签: mysql ms-access dateadd linked-tables


【解决方案1】:

您查询中的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

使用较早的格式...

2012-04-24 19:00:00

所以现在比较同一时间点的这两种不同表示。

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

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

【讨论】:

    【解决方案2】:

    如果 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 出于某种原因想要添加一天:(
    • 澄清...这些表存储为带有时间戳的 MySQL 表...Access 应用程序使用查询/视图来透视数据 - 因为没有更好的词。查询的 SELECT 语句必须在 Access 而不是 MySQL 中完成
    • 我认为您可以在 MS Access 中强制执行非标准查询。如果没有,您总是可以在 MySQL 中创建一些产生所需输出的视图,然后从 Access 中查询这些视图。
    • 这是最后的解决办法,是的,理想情况下我希望它在 Access 中完成。 :(
    猜你喜欢
    • 1970-01-01
    • 2021-03-14
    • 2021-03-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-05-01
    相关资源
    最近更新 更多