Php 将mySQL数据库的日志文件日期时间格式从12小时转换为24小时
我正在创建一个web应用程序来分析客户自定义数据库中的数据。我很难找到一种方法,如何将客户端的日志文件条目从12小时转换为24小时。我使用的数据库无法读取12小时时间格式,因此显示的时间错误 我正在使用的日志文件如下所示: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 我需要将日志文件转换为如下
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上运行。谢谢!我会尝试一下,然后公布结果