2011-01-04 4 views
0

내 간단한 질문은 .. 언제든지 그것을 삽입 할 필요가 없도록 PHPtime() 값을 기본적으로 MYSQL 데이터베이스의 열에 삽입 할 수 있습니까? 나는 감사합니다 ...MYSQL 데이터베이스의 열에 php time() 값을 기본적으로 삽입 할 수 있습니까?

이 어떤 도움이 크게 감사합니다 .. 그들은 정수로 타임 스탬프를 제공하는 시간 함수와 달리 정수로 저장되지 않습니다 ..하지만 MYSQL이 CURR_TIMESTAMP를 제공 알고

+2

그것은 데이터베이스가 '시간'형식을 지원하는 경우 정수로 "시간"을 저장하는 정말 나쁜 습관입니다 : 여기에 좋은 예입니다. 나중에 정수로 필요하다면 (그리고 왜 물어봐야 할지도 모른다. 어쩌면 다른 것이 깨져있을 수도있다), 당신은 언제나 그것을 변환 할 수있다. – Konerak

+0

실제로 PHP가 데이터베이스 서버의 시계와 반대로 실행되는 서버의 시간을 언급하고 있습니까? –

+0

나는 unixtimestamp을 가지고 있는데, 쿼리 사이에서 실행해야합니다 ... 저장된 형식이 다른 경우 다른 방법으로 쿼리해야합니다. – saikat

답변

3

예 :

drop table if exists file_events; 

create table file_events (
    id int unsigned auto_increment not null, 
    file_id int unsigned not null, 
    event_time int unsigned not null default UNIX_TIMESTAMP(), # the field that defaults to "now" 
    primary key(id), 
    constraint foreign key fk_file_events_to_sam_files (file_id) references files(id) on delete cascade 
) ENGINE=InnoDB; 
+0

'CURRENT_TIMESTAMP'과'NOW()'는 완전히 동일하므로 아무 것도 추가하지 않습니다. –

+0

@Matthew : 너 어디 맞아, 내가 내 대답을 편집 했어, UNIX_TIMESTAMP()가 OP가 윙윙 거렸다. –

+1

'timestamp' 열은 다른 유형의 날짜 일 뿐이며 정수가 아닙니다. 'UNIX_TIMESTAMP()'(*는 * 정수)의 결과를 저장하려고하면 얻을 수있는 것은 모두'0000-00-00 00 : 00 : 00'입니다. –

1

당신이 항상 트리거 [http://dev.mysql.com/doc/refman/5.1/en/create-trigger.html] 단지 현재의 타임 스탬프에 당신의 선택의 열을 설정하는 트리거를 만들 때 사용할 수있는 MySQL의 기지에 그것을하려면

+0

이것은 주어진 질문에 대한 유효한 답변입니다. 물론 적절한 날짜를 저장하고'UNIX_TIMESTAMP()'를 사용하여 변환을하는 것이 더 합리적 일 것입니다. –

0

당신은 단지 MySQL의 t에 충실해야 imestamp하고 필요에 따라 변환하십시오.

strtotime("put the mysql timestamp here"); 

많은 다른 DBMS와 달리, MySQL은 디폴트 값 등의 기능을 지원하지 않습니다

time(); 
+0

물론 그렇습니다. 사실입니다 ... 저는 unixtimestamp를 가지고 있는데, 쿼리 사이에서 실행해야합니다 ... 저장된 형식이 그런 식이면 다른 방식으로 쿼리해야합니다 ... – saikat

+1

PHP의 시간과 MySQL의' TIMESTAMP' * 둘 다 * 유닉스 시대부터의 초를 나타냅니다. MySQL의 [overview] (http://dev.mysql.com/doc/refman/5.0/en/date-and-time-type-overview.html)를 참조하십시오. –

0

와 같은 형식 (유닉스 타임 스탬프)을 생성합니다 ... 쉽게 할 수 있습니다. 유일한 예외는 언급 한 날짜입니다. 날짜는 CURRENT_TIMESTAMP (또는 그 값 중 하나)을 수락합니다.

$sql = "SELECT foo_id, foo_info 
    FROM foo 
    WHERE '" . date('Y-m-d H:i:s', 1294133369) . "')<=foo_date"; 

무엇이든간에, 당신이 절대적으로 필요한 경우 : PHP에서,

SELECT foo_id, foo_info 
FROM foo 
WHERE FROM_UNIXTIME(1294133369)<=foo_date 

또는 : 그 쉽게 즉석에서 유닉스 타임 스탬프를 변환 할 수 있기 때문에 어쨌든 매우 허용 솔루션의 나에게 나타납니다 날짜를 정수로 저장하려면 직접 트리거를 작성해야합니다.

http://mysqldatabaseadministration.blogspot.com/2006/01/playing-with-triggers.html

관련 문제