在 MS Access SQL 查询中从普通日期转换为 unix 纪元日期

Posted

技术标签:

【中文标题】在 MS Access SQL 查询中从普通日期转换为 unix 纪元日期【英文标题】:Converting from normal date to unix epoch date in MS Access SQL query 【发布时间】:2011-05-20 13:57:06 【问题描述】:

我正在尝试为 MS Access 2007 通过 ODBC 连接到 mysql 数据库编写查询。一切正常,查询完成了我想要它做的事情。我挂断的部分是我一直在向用户询问 unix 纪元时间,而不是常规日期。

我查找了一堆有关 MS Access 的参考资料,虽然我可以在 SQL 调用中使用许多日期转换函数,但我找不到任何可以用来从正常日期转换的函数 -> unix 纪元日期。

我想要并且我认为这可行,是以一种更友好的方式(人类可读的日期)向用户询问日期,然后将其转换为 unix 纪元日期。现在我考虑了一下,我想我的另一个选择是在使用 SQL 查询提取它们之后转换数据库中的 unix 纪元日期,但如果可能的话,我宁愿转换用户的输入,因为这样的输入更少输入,这样我就不必做那么多工作了。

SELECT TOP 5 Count( * ) AS [Number of visits by language], login.lang AS [Language]
FROM login, reservations, reservation_users
WHERE (reservations.start_date Between [Starting unix epoch time] And [Ending unix epoch time]) And reservations.is_blackout=0 And reservation_users.memberid=login.memberid And reservation_users.resid=reservations.resid And reservation_users.invited=0
GROUP BY login.lang
ORDER BY Count( * ) DESC;

【问题讨论】:

【参考方案1】:

不知道这是否可行(无权确认),但请尝试此处的建议:

http://weblogs.sqlteam.com/jeffs/archive/2007/04/13/format-date-sql-server.aspx

使用哪个:

    DATEDIFF(second, '1 Jan 1970', tbl.LastChangeDate)

这是来自一些cmets。

编辑:请参阅 Remou 的评论。

【讨论】:

我认为你的意思是 DateDiff("s", "01/01/1970 00:00:00", time_field) -- epochconverter.com 完美。多谢你们!我找到了这个功能,但没想到按规定的方式使用它。【参考方案2】:

使用 MS 2010 我发现这个工作: DateAdd("s",([epoch timestamp]-21600),#1/1/1970#)

http://www.pcreview.co.uk/forums/convert-epoch-date-t2324318.html

【讨论】:

以上是关于在 MS Access SQL 查询中从普通日期转换为 unix 纪元日期的主要内容,如果未能解决你的问题,请参考以下文章

日期转换错误——MS Access前端查询sql后端

通过运行 SQL 查询在 MS Access 2012 上更改年份日期格式的错误

使用 Excel VBA 查询 MS Access,SQL BETWEEN 日期查询

VBA 代码中的 MS Access SQL 查询

在 MS-Access 中插入带日期时间的 SQL 命令

MS Access/SQL 子查询的语法,包括聚合函数