我需要将数据从MySQL转换成非常特定的日期时间格式,以便能够定期自动集成到客户端的数据库中。
我想知道是否有一种方法可以将YYYY-MM-DD hh:mm:ss格式的常用MySQL时间戳转换为一个非常具体的字符串,该字符串描述日期/时间格式,如dd hh:mm:ss.sss (例如07-9.10-12:00:00.000)。新的日期/时间格式必须精确到毫秒值。
我知道有一些巧妙的方法可以操纵传入的数据,将字符串放入MySQL可以接受的日期时间格式,但我似乎找不到导出数据的相同工具。我想使用SQL来处理大部分这些问题,但如果这是一个更好的工具,我对PHP有一定的了解。
发布于 2013-12-11 19:13:54
创建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;但是,您也可以通过在时间结束后显式设置30来伪造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中格式化。
发布于 2013-12-11 19:13:46
如果你还没有得到毫秒信息,你会从哪里得到它呢?您需要将毫秒设置为'000‘-硬编码。现在很简单,就像:
echo date('dd-Mos-yy hh:mm:ss', strtotime($mysql_time)) . '000';我还要确保,另一个数据库服务器使用的是与您相同的时区。否则,您可能必须转换之前的时间。
https://stackoverflow.com/questions/20527909
复制相似问题