Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/248.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 将mySQL数据库的日志文件日期时间格式从12小时转换为24小时_Php_Mysql_Sql Server_Database_Bulk Load - Fatal编程技术网

Php 将mySQL数据库的日志文件日期时间格式从12小时转换为24小时

Php 将mySQL数据库的日志文件日期时间格式从12小时转换为24小时,php,mysql,sql-server,database,bulk-load,Php,Mysql,Sql Server,Database,Bulk Load,我正在创建一个web应用程序来分析客户自定义数据库中的数据。我很难找到一种方法,如何将客户端的日志文件条目从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 我需要将日志文件转换为如下

我正在创建一个web应用程序来分析客户自定义数据库中的数据。我很难找到一种方法,如何将客户端的日志文件条目从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
我需要将日志文件转换为如下所示:

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小时时钟

任何帮助都将不胜感激

谢谢


Aaron

如果您想在db端这样做,并且使用MySql,您可以使用STR_to_DATE读取它,或者将它用作datetime值

在日志中插入“站点名称”、“点击次数”、“日期”、“交互类型”` 选择'site1',10,STR_TO_DATE'10/05/2013_2:00PM','%d/%m/%Y_%l:%i%p',1; 或

更新日志 将date=STR_设置为_DATEstr_日期,'%d/%m/%Y_%l:%i%p'; 假设date列的类型为datetime,str_date列包含12h格式的字符串值

或者,如果出于某种原因,您将其存储为VARCHAR,并且确实需要将其格式化为DD/MM/YYYY\u 14:00,那么您可以使用DATE\u格式

日期\u格式\u至\u日期'2013年5月10日\u下午2:00','%d/%m/%Y\u%l:%i%p','%d/%m/%Y\u%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');

这是一个演示。

为什么不编写一个简单的应用程序来搜索所有日志条目,并在找到PM格式的日期时进行更新。 您基本上需要编写一段代码,如果时间中有PM,它将增加12小时

这里是一个粗略的代码在C。。。尚未完全测试,但您可以在此基础上进行构建

protected string ConvertToPM(string logEntry)

{
    string result = string.Empty;

//DD/MM/YYYY_2:00PM
if (logEntry.Contains("PM"))
{
   string temp = logEntry.Substring(logEntry.IndexOf("_"), logEntry.IndexOf(":") - logEntry.IndexOf("_"));

    result = logEntry.Replace(temp, (Convert.ToInt32(temp) + 12).ToString());
}

return result;
}

只需添加一段代码,它将一行一行地读取日志文件b提取日期c部分使用类似于上面的函数来更改数据…

请参见。您使用的是mysql还是sql server?到目前为止,我还没有尝试过。日志文件将从ms sql server客户端的数据库发送给我们,我们的数据库正在mysql上运行。谢谢!我会尝试一下,然后公布结果