首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将MySQL日期时间转换为非常特定的导出格式

问将MySQL日期时间转换为非常特定的导出格式
EN

Stack Overflow用户
提问于 2013-12-11 19:10:15
回答 2查看 4.6K关注 0票数 3

我需要将数据从MySQL转换成非常特定的日期时间格式,以便能够定期自动集成到客户端的数据库中。

我想知道是否有一种方法可以将YYYY-MM-DD hh:mm:ss格式的常用MySQL时间戳转换为一个非常具体的字符串,该字符串描述日期/时间格式,如dd hh:mm:ss.sss (例如07-9.10-12:00:00.000)。新的日期/时间格式必须精确到毫秒值。

我知道有一些巧妙的方法可以操纵传入的数据,将字符串放入MySQL可以接受的日期时间格式,但我似乎找不到导出数据的相同工具。我想使用SQL来处理大部分这些问题,但如果这是一个更好的工具,我对PHP有一定的了解。

EN

回答 2

Stack Overflow用户

发布于 2013-12-11 19:13:54

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

代码语言:javascript
复制
SELECT DATE_FORMAT(date, '%d-%b-%y %H:%m:%s.%f') as date_formatted FROM your_table;

这也使用%f选项处理微秒,但这提供了6位数&而不是3位数,因为您的问题说明。如果您真正知道该日期需要3位数的毫秒时间,则可以使用SUBSTRING()返回所需的字符串日期数据。这应该能行

代码语言:javascript
复制
SELECT SUBSTRING(DATE_FORMAT(date, '%d-%b-%y %H:%m:%s.%f'),1,22) as date_formatted FROM your_table;

但是,您也可以通过在时间结束后显式设置30来伪造3位数字,如下所示:

代码语言:javascript
复制
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()可以转换它:

代码语言:javascript
复制
SELECT UNIX_TIMESTAMP(date) as date_unixtimestamp FROM your_table;

然后,使用这个date_unixtimestamp并按照您的意愿在PHP中格式化。

票数 6
EN

Stack Overflow用户

发布于 2013-12-11 19:13:46

如果你还没有得到毫秒信息,你会从哪里得到它呢?您需要将毫秒设置为'000‘-硬编码。现在很简单,就像:

代码语言:javascript
复制
echo date('dd-Mos-yy hh:mm:ss', strtotime($mysql_time)) . '000';

我还要确保,另一个数据库服务器使用的是与您相同的时区。否则,您可能必须转换之前的时间。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20527909

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档