php - 将 mySQL 数据库的日志文件日期时间格式从 12 小时制批量转换为 24 小时制

标签 php mysql sql-server database bulk-load

我正在创建一个网络应用程序来分析来自客户自定义数据库的数据。我很难找到将客户端的日志文件条目从 12 小时制转换为 24 小时制的方法。我设置的数据库无法读取 12 小时时间格式,因此显示时间错误。

我使用的日志文件如下所示:

Site_Name,number_of_clicks,DD/MM/YYYY_2:00PM,Interaction_Type

我需要将日志文件转换为如下所示:

Site_Name,number_of_clicks,DD/MM/YYYY_14:00,Interaction_Type

每个日志文件有数以万计的条目,因此无法对每个条目执行此操作。我需要找到一种方法将每个日志文件的条目批量转换为 24 小时制。

任何帮助将不胜感激!

谢谢!

亚伦

最佳答案

如果您想在数据库端执行此操作并且使用 MySql,您可以使用 STR_TO_DATE() 读取它,并将其用作日期时间值

INSERT INTO log (`Site_Name`, `number_of_clicks`, `date`, `Interaction_Type`)
SELECT 'site1', 10, STR_TO_DATE('10/05/2013_2:00PM', '%d/%m/%Y_%l:%i%p'), 1;

UPDATE log
   SET date = STR_TO_DATE(str_date, '%d/%m/%Y_%l:%i%p');

假设 date 列的类型为 datetime,并且 str_date 列包含 12 小时格式的字符串值。

或者,如果由于某种原因您将其存储为 VARCHAR 并且确实需要将其格式化为 DD/MM/YYYY_14:00 那么您可以使用 DATE_FORMAT( )

DATE_FORMAT(STR_TO_DATE('10/05/2013_2:00PM', '%d/%m/%Y_%l:%i%p'), '%d/%m/%Y_%k:%i')

这将产生

|          NEWDATE |
--------------------
| 10/05/2013_14:00 |

就地更新

UPDATE log
   SET str_date = DATE_FORMAT(STR_TO_DATE(str_date, '%d/%m/%Y_%l:%i%p'), '%d/%m/%Y_%k:%i');

这里是SQLFiddle 演示。

关于php - 将 mySQL 数据库的日志文件日期时间格式从 12 小时制批量转换为 24 小时制,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16909648/

相关文章:

php - 从 PHP 读取 mercurial 存储库

php - jquery跨域文件上传

php - 执行MySQL查询时如何获取错误值?

Php Mysql分页

c# - 需要很长时间才能从数据适配器 C# 中填充数据表

sql-server - 使用 SqlBulkCopy 将 F# DataTable 转换为 SQL

sql-server - 如何获取所有存储过程执行时间,杯子时间等

php - Codeigniter:发生数据库错误无法使用提供的设置连接到数据库服务器

php - MySQL查询没有正确显示所有记录

php - 从php中的对象中检索数据