2016-10-20 2 views
0

datetimes 대신 varchars이있는 데이터베이스를 상속 받았으며, 한 날짜가 다른 날짜보다 작 으면보고 할 수 있기를 바랍니다.HeidiSQL varchar를 Datetime으로 변환합니다.

Select 
    RENEWDATE, 
    (CONCAT(substring(renewdate, 1,4), "-", substring(renewdate, 5,2), "-", substring(renewdate, 7,2), " 23:59:59")) 
FROM solutionsdmp 
WHERE Approval = "Approved" 
GROUP BY Author 
ORDER BY Author ASC 
이 날짜 형식을 변환

: 20160217이로 : 2016-02-17 23:59:59

내가 두 날짜 마지막 modififed과 갱신 날짜가

나는이 데이터베이스 쿼리가 있습니다. 모두 varchars으로 저장되었지만 형식이 다릅니다. 하나는 varchar으로 저장되지만 datetime2015-02-17 23:59:59과 같이 형식화 된 다음 위에 나열된 다른 하나는 20160217으로 표시됩니다. 둘 다 datetimes로 변환하여 쿼리를 실행하고 하나가 다른 쿼리보다 적은지를 확인할 수 있기를 원합니다. 갱신 날짜가 지났는 지 알 수 있도록

나는이 작동하지 않습니다 변화를 많이 시도했다, 그러나 이것은 내 최신 시도 :

SELECT 
     RENEWDATE, 
     CONVERT(DATETIME,(CONCAT(substring(renewdate, 1,4), "-", substring(renewdate, 5,2), "-", substring(renewdate, 7,2), " 23:59:59"))) 
    FROM solutionsdmp 
    WHERE Approval = "Approved" 
    GROUP BY Author 
    ORDER BY Author ASC 

사람이 올바른 방향으로 날 포인트

?

감사합니다.

+0

*이 날짜가이 날짜보다 짧습니까? ... .... 조금 더 자세히 설명 할 수 있습니까? – Hackerman

+0

@Hackerman 게시물을 업데이트했습니다 :) – hlh3406

+0

쿼리에서 if를 사용하여 크거나 작은 값이있는 것을 확인할 수 있습니다. https : //mariadb.com/kb/en/mariadb/if -function/... 또한 변환을 위해 https://www.techonthenet.com/mariadb/functions/str_to_date.php를 사용할 수 있습니다. – Hackerman

답변

0

스스로 해결 방법을 제시 할 수 있었지만 도움이 필요한 사람은 여기에 게시 할 수 있습니다.

나는 CAST을 수행 한 다음 HAVING을 사용하여 필터링을 수행했습니다. 그것은 나를 위해 일했다!

Select 
    Author, 
    Problem, 
    CAST(Last_Modified_DATE AS DATETIME) AS lmd, 
    CAST((CONCAT(substring(renewdate, 1,4), "-", substring(renewdate, 5,2), "-", substring(renewdate, 7,2), " 23:59:59")) AS DATETIME) AS rend 
from solutionsdmp 
WHERE Approval = "Approved" 
HAVING 
lmd < rend 
order by 
Author ASC 
관련 문제