-1

I want to sub string date from [09/Jul/2014:16:12:58 +0530] and want to feed it to Date type Field. My complete query is like this

    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;

How it is possible.

Sathish
  • 4,419
  • 4
  • 30
  • 59

2 Answers2

0

try this:

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;
Microlang
  • 534
  • 4
  • 7
  • It seems your field isn't a Datetime Type use STR_TO_DATE to convert in string and then parse a substring you wont: – Microlang Jul 26 '14 at 10:00
0

date_format(str_to_date(SUBSTR(AccessDateTime,2,11),'%d/%b/%Y'),'%Y-%b-%d')

    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 |

http://sqlfiddle.com/#!9/a24ce/1

Paul Maxwell
  • 33,002
  • 3
  • 32
  • 51
  • I have added one new field and insert the Date there. I will select it from there with the str_to_date() function. – user3879423 Jul 28 '14 at 09:26