질문과 답변· ··조회 15,917
[re] 날짜,시간 함수에 대하여
방법은 두가지입니다.
첫번째는 MySQL 에서 해결하는 방법
두번째는 PHP 에서 해결하는 방법
가장 쉬운 방법은 MySQL 에서 해결하는거겠죠.
reg_date 필드의 속성을 datetime 으로 바꿔주기만 하면 됩니다.
그렇게 되면 디폴트로 0000-00-00 00:00:00 이 입력되고...
now() 로 해서 인서트 했을 경우 2004-03-13 20:17:08 같이 들어갑니다.
다른 방법으로는 PHP 의 날짜함수를 사용하는건데요.
그 첫번째 방법은 date() 를 쓰는겁니다.
우선 저 함수를 써서 날짜를 입력하려면 디비 필드 속성을 바꾸셔야
합니다. date 로 하지 마시고 char(19) 로 하시구요.
인서트 하는 방법은...
우선 입력시 날짜를 구해야겠죠.
$reg_date=date("Y-m-d H:m:s");
위와 같이하면 $reg_date 변수에 현재 입력날짜가 입력됩니다.
예) 2004-03-13 20:17:20 (총 자릿수가 19 이라 char(19) 를 하는 겁니다)
그리고 나서 $reg_date 로 날짜를 인서트하면 되겠죠.
다른 방법으로는 time() 을 사용하는 겁니다. time() 의 경우
유닉스 타임스탬프로 저장이 되죠. time() 으로 저장된 시간을
우리가 식별가능한 형식으로 보려면 아래와 같이 사용하면 됩니다.
date('Ymd H:m:s', time()); (결과) 20040313 20:17:40
>공부하는 학생입니다..
>검색을 해보았지만 답이 없어 이렇게...
>
>//현재 회원TABLE 구조는
>
>CREATE TABLE member (
> num int(10) DEFAULT '0' NOT NULL auto_increment,
> user_id varchar(10),
> userpass varchar(10),
> username varchar(20),
> jumin1 varchar(6),
> jumin2 varchar(7),
> email varchar(40),
> job varchar(30),
> post varchar(7),
> addr varchar(60),
> tel varchar(25),
> hphone varchar(25),
> remail char(3),
> reg_date date,
> PRIMARY KEY (num)
>);
>
>
>//INSERT문은
>
>$query="insert into member values('','$userid','$userpass','$username','$jumin1','$jumin2','$email','$job','$post','$addr',
>'$tel','$hphone','$remail',now(),)";
>
>
>위와 같이 저장이 되었을 경우에
>회원가입일자 년,월,일은 구해지는데..
>년,월,일,시,분 까지를 얻고자 한다면
>어떻게 해야 하는지...??
>
>도움을 부탁드립니다.
>
첫번째는 MySQL 에서 해결하는 방법
두번째는 PHP 에서 해결하는 방법
가장 쉬운 방법은 MySQL 에서 해결하는거겠죠.
reg_date 필드의 속성을 datetime 으로 바꿔주기만 하면 됩니다.
그렇게 되면 디폴트로 0000-00-00 00:00:00 이 입력되고...
now() 로 해서 인서트 했을 경우 2004-03-13 20:17:08 같이 들어갑니다.
다른 방법으로는 PHP 의 날짜함수를 사용하는건데요.
그 첫번째 방법은 date() 를 쓰는겁니다.
우선 저 함수를 써서 날짜를 입력하려면 디비 필드 속성을 바꾸셔야
합니다. date 로 하지 마시고 char(19) 로 하시구요.
인서트 하는 방법은...
우선 입력시 날짜를 구해야겠죠.
$reg_date=date("Y-m-d H:m:s");
위와 같이하면 $reg_date 변수에 현재 입력날짜가 입력됩니다.
예) 2004-03-13 20:17:20 (총 자릿수가 19 이라 char(19) 를 하는 겁니다)
그리고 나서 $reg_date 로 날짜를 인서트하면 되겠죠.
다른 방법으로는 time() 을 사용하는 겁니다. time() 의 경우
유닉스 타임스탬프로 저장이 되죠. time() 으로 저장된 시간을
우리가 식별가능한 형식으로 보려면 아래와 같이 사용하면 됩니다.
date('Ymd H:m:s', time()); (결과) 20040313 20:17:40
>공부하는 학생입니다..
>검색을 해보았지만 답이 없어 이렇게...
>
>//현재 회원TABLE 구조는
>
>CREATE TABLE member (
> num int(10) DEFAULT '0' NOT NULL auto_increment,
> user_id varchar(10),
> userpass varchar(10),
> username varchar(20),
> jumin1 varchar(6),
> jumin2 varchar(7),
> email varchar(40),
> job varchar(30),
> post varchar(7),
> addr varchar(60),
> tel varchar(25),
> hphone varchar(25),
> remail char(3),
> reg_date date,
> PRIMARY KEY (num)
>);
>
>
>//INSERT문은
>
>$query="insert into member values('','$userid','$userpass','$username','$jumin1','$jumin2','$email','$job','$post','$addr',
>'$tel','$hphone','$remail',now(),)";
>
>
>위와 같이 저장이 되었을 경우에
>회원가입일자 년,월,일은 구해지는데..
>년,월,일,시,분 까지를 얻고자 한다면
>어떻게 해야 하는지...??
>
>도움을 부탁드립니다.
>
댓글 6
그러나
신규가입회원은 처리가 되겠지만
이미 가입이 되어있는 회원은 어떻게 값을 구하나요..?
그래서 개발보다 설계가 훨씬 중요한겁니다. 설계가 제대로 되면 개발은 금방이거든요. 사상누각이 안되려면 설계를 철저하게.!!!
기존에 날짜가 저장된 필드 reg_date의 타입이 date 형이네요. date 형에는 시간이 저장되지 않는 걸로 알고 있습니다.
필드 타입이 date 형일 경우에 mysql의 now()함수 값을 저장하면 2004-03-14 와 같이 연-월-일이 저장됩니다. 날짜값은 저장이 아예 되질 않습니다.
시간까지 저장하려면 reg_date의 타입을 datetime 형식으로 바꿔줘야 합니다.(그러더라도 과거의 시간은 알 수 업습니다.)
datetime 형식은 2004-03-14 12:09:35 와 같이 저장됩니다.
그러나 기존 테이블에서 date 형식을 datetime 형식을 바꾸면 기존 date 형식의 모든 정보는 0으로 바뀌어버립니다. 조심하시길!!!!!
즉, 처음부터 테이블 만들 때 reg_date 형식을 datetime 형식으로 했어야 합니다.
또한 두리뭉실님의 말씀처럼 PHP의 time() 함수를 사용하여 날짜와 시간을 저장할 수 있는데 이때는 reg_date 의 타입은 INT 형이어야 합니다.
결론. 기존에 입력된 정보로는 시간과 분,초 값을 얻을 수 없습니다.
이번에도 두리뭉실님이 저와 거의 동시에 답변을....
하하하
컴 앞에 앉아 있는 시간대가 거의 동일한가보네요..하하하~
기존 date 형을 datetime 형으로 바꾸면 기존 연-월- 일 정보는 그대로 유지됩니다.
INT 형을 datetime 형으로 바꿀 때 기존 값이 0으로 바뀝니다.
정정합니다~
어쩔수 없이 기존대로 사용을 하던지..
아님 신규회원에게만 처리가 되게끔 하던지 해야 겠네요..
아무튼 감사합니다..