php - 将 MySQL 日期时间转换为非常特定的格式以进行导出

标签 php mysql sql date datetime

我需要将数据从 MySQL 转换为非常具体的日期时间格式,以便它可以定期自动集成到客户的数据库中。

我想知道是否有办法将格式为 YYYY-MM-DD hh:mm:ss(例如 2012-01-10 10:58:07)的常用 MySQL 时间戳转换为非常具体的字符串描述日期/时间格式,如 dd-Mos-yy hh:mm:ss.sss(例如 07-Sep-10 12:00:00.000)。新的日期/时间格式必须精确,精确到毫秒值。

我知道有一些聪明的方法可以操纵传入的数据,将字符串放入 MySQL 可以接受的日期时间格式,但我似乎找不到相同的工具来导出数据。我想使用 SQL 来处理其中的大部分,但如果 PHP 是更好用的工具,我还需要了解一些 PHP 知识。

最佳答案

只需使用 DATE_FORMAT()当您创建 MySQL 查询时:

SELECT DATE_FORMAT(date, '%d-%b-%y %H:%m:%s.%f') as date_formatted FROM your_table;

这也使用 %f 选项处理微秒,但它提供 6 位数字而不是 3 位数字作为您的问题说明。如果你真的知道日期需要 3 位毫秒数,你可以使用 SUBSTRING()只返回您需要的字符串日期数据。这应该有效

SELECT SUBSTRING(DATE_FORMAT(date, '%d-%b-%y %H:%m:%s.%f'),1,22) as date_formatted FROM your_table;

但您也可以通过在时间后明确设置 3 个 0 来伪造 3 位数字,如下所示:

SELECT DATE_FORMAT(date, '%d-%b-%y %H:%m:%s.000') as date_formatted FROM your_table;

请注意 %f 现在是 .000。但是也就是说,这不是毫秒精度,因为 .000 只是作为文本附加而不是基于真实数据。至少 %f 正在处理真实日期数据。

因此,如果基于上述示例,DATE_FORMAT 不能 100% 完美满足您的需求,也许使用 PHP 日期格式是最好的处理方式。如果是这样,日期/时间数据将存储为 Unix 时间戳?或者只是一个时间戳?

如果只是时间戳,使用UNIX_TIMESTAMP()会转换它:

SELECT UNIX_TIMESTAMP(date) as date_unixtimestamp FROM your_table;

然后获取那个 date_unixtimestamp 并根据需要在 PHP 中进行格式化。

关于php - 将 MySQL 日期时间转换为非常特定的格式以进行导出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20527909/

相关文章:

Mysql查询连接表上日期之间的数据

java - 如何正确向jpa onetomany join表添加记录

sql - Oracle 11g XE "alter table drop column"导致 ORA-00600

sql - Entity Framework 在插入其他表时未引用的表中创建新记录

sql - 当列中具有不同值时如何连接两个表

php - 为 SOAP 请求创建特定信封

php - 对于 Web 应用程序,将多个页面上的嵌套讨论分开的最佳方法是什么?

php - 如何在php中正确放置mysql查询?

javascript - AJAX POST 到 PHP JSON 错误

c# - 序列包含一个以上的元素 Mvc