2009-09-27 6 views

답변

1

가장 효율적인 방법은 아니지만 다음과 같이 할 수 있습니다.

UPDATE my_table 
SET my_date = CONCAT(my_year, '-', my_month, '-', my_day, ' ', 
    my_hour, ':', my_mins, ':', my_seconds) 
WHERE ... 
+0

내가 대신 아포스트로피 (')의 큰 따옴표 (")를 사용하는 데 필요한, 그러나 이것은 일 – Germstorm

1

당신은 문자열로 그들 모두를 넣어 다음과 같이, datetime에 해당 문자열을 변환 할 수 있습니다 : 그것은 될 수 있도록

update tbl 
set datecol = cast(cast(`year` as varchar) + '-' + 
       cast(`month` as varchar) + '-' + 
       cast(`day` as varchar) + ' ' + 
       cast(`hour` as varchar) + ':' + 
       cast(`minute` as varchar) + ':' + 
       cast(`second` as varchar) as datetime) 

은, 비록 내가, MySQL은 concat 사용 생각 :

cast(concat(cast(`year` as varchar), '-', cast(`month` as varchar), '-',...) as datetime) 
0

당신은, 예를 들어, 그것으로 STR_TO_DATE를 사용하여 직접 그것을 사용할 수 있지만, 당신은 또한 실제 DATETIME로 전환 할 수

CONCAT(year,'-', month, '-', day,' ',hour, ':', min, ':', sec) 

날짜 시간 값처럼 보이는 무언가를 만들기 위해 함께 CONCAT 데이터를 사용할 수 있습니다

STR_TO_DATE(
    CONCAT(year,'-', month, '-', day,' ',hour, ':', min, ':', sec), 
    '%Y-%m-%d %H:%i:%S'); 
0
CREATE TABLE `x` (
    `y` int(4) DEFAULT NULL, 
    `m` int(4) DEFAULT NULL, 
    `d` int(4) DEFAULT NULL, 
    `h` int(4) DEFAULT NULL, 
    `i` int(4) DEFAULT NULL, 
    `s` int(4) DEFAULT NULL 
); 
INSERT INTO x SELECT 2009, 9, 1, 9, 59, 59; 
SELECT STR_TO_DATE(CONCAT(y,'-', m,'-', d,'-', h,'-', i,'-', s), '%Y-%m-%d-%h-%i-%s') FROM x; 
관련 문제