Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/72.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
Mysql日期格式转换_Mysql_Sql_String_Date_Squid - Fatal编程技术网

Mysql日期格式转换

Mysql日期格式转换,mysql,sql,string,date,squid,Mysql,Sql,String,Date,Squid,我想将日期从[09/Jul/2014:16:12:58+0530]分为子字符串,并将其输入日期类型字段。 我的完整查询如下 insert into SquidLog (LocalIP,AccessDateTime,Url,HttpAccessCode,BytesAccessed,DestinationIP, SquidErrorCode,SquidTimeStamp,AccessDate,AccessTime) select LocalIP, AccessDateTi

我想将日期从[
09/Jul/2014:16:12:58+0530
]分为子字符串,并将其输入日期类型字段。 我的完整查询如下

    insert into SquidLog 
   (LocalIP,AccessDateTime,Url,HttpAccessCode,BytesAccessed,DestinationIP,
   SquidErrorCode,SquidTimeStamp,AccessDate,AccessTime) select LocalIP,
   AccessDateTime,Url,HttpAccessCode,BytesAccessed,DestinationIP,
   SquidErrorCode,SquidTimeStamp, 
   DATE_FORMAT(replace(SUBSTR(AccessDateTime,2,11),"/","-"),'%Y-%b-%d'), 
   SUBSTR(AccessDateTime,14,8) from SquidLogTemp;
这是怎么可能的。

试试这个:

insert into SquidLog (LocalIP,AccessDateTime,Url,HttpAccessCode,BytesAccessed,DestinationIP, SquidErrorCode,SquidTimeStamp,AccessDate,AccessTime) select LocalIP, AccessDateTime,Url,HttpAccessCode,BytesAccessed,DestinationIP, SquidErrorCode,SquidTimeStamp, STR_TO_DATE(replace(SUBSTR(AccessDateTime,2,11),"/","-"),'%Y-%b-%d'), SUBSTR(AccessDateTime,14,8) from SquidLogTemp; 插入到日志中 (LocalIP、AccessDateTime、Url、HttpAccessCode、BytesAccessed、DestinationIP、, SquidErrorCode、SquidTimeStamp、AccessDate、AccessTime)选择LocalIP, AccessDateTime、Url、HttpAccessCode、BytesAccessed、DestinationIP、, SquidErrorCode,SquidTimeStamp, STR_TO_DATE(替换(SUBSTR(AccessDateTime,2,11)、“/”、“-”、%Y-%b-%d)), SquidLogTemp中的SUBSTR(AccessDateTime,14,8); 日期格式(str-to-date(SUBSTR(AccessDateTime,2,11),“%d/%b/%Y”),“%Y-%b-%d”)


您的代码建议您接受多种格式的输入,是真的吗?日期必须放在不同的字段中,时间必须放在不同的字段中。好的,没关系……“日期必须放在不同的字段中,时间必须放在不同的字段中”有什么特别的原因吗?这可能是一个麻烦。年和小时之间真的有冒号吗?看起来你的字段不是日期时间类型。使用STR_TO_DATE转换成字符串,然后解析你不喜欢的子字符串:我添加了一个新字段并在那里插入日期。我将使用str_to_date()函数从中选择它。
    CREATE TABLE SquidLogTemp
        (`AccessDateTime` varchar(26))
    ;

    INSERT INTO SquidLogTemp
        (`AccessDateTime`)
    VALUES
        ('09/Jul/2014:16:12:58 +0530')
    ;

**Query 1**:

    select
           date_format(str_to_date(AccessDateTime,'%d/%b/%Y'),'%Y-%b-%d')
         , substring(AccessDateTime,13,8)
         , str_to_date(substring(AccessDateTime,13,8),'%H:%i:%s') 
    from SquidLogTemp



**[Results][2]**:

    | DATE_FORMAT(STR_TO_DATE(ACCESSDATETIME,'%D/%B/%Y'),'%Y-%B-%D') | SUBSTRING(ACCESSDATETIME,13,8) | STR_TO_DATE(SUBSTRING(ACCESSDATETIME,13,8),'%H:%I:%S') |
    |----------------------------------------------------------------|--------------------------------|--------------------------------------------------------|
    |                                                    2014-Jul-09 |                       16:12:58 |                         January, 01 1970 16:12:58+0000 |