2014-07-26 6 views
-1

[09/Jul/2014:16:12:58 +0530]에서 문자열 날짜를 하위로 지정하고 날짜 유형 필드에 입력하려고합니다. 내 전체 질의는 다음과 같습니다.MySQL 날짜 형식으로 변환

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; 

가능한 방법.

+0

귀하의 코드는 여러 형식의 입력을 허용하려는 제안, 정말 사건이다? –

+0

날짜가 다른 필드에 들어가야하고 시간이 다른 필드에 있어야합니다. – user3879423

+0

좋아요, 신경 쓰지 마세요 ... –

답변

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

+0

나는 하나의 새로운 필드를 추가하고 거기에 날짜를 삽입합니다. str_to_date() 함수를 사용하여 거기에서 선택하겠습니다. – user3879423

0

이 시도 :

 
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; 
+0

당신의 필드가 Datetime Type이 아닌 것으로 보인다. STR_TO_DATE를 사용하여 문자열로 변환 한 다음, 당신이 쓰는 부분 문자열을 구문 분석하십시오 : – Microlang