Programing

PHP를 사용하여 mysql 테이블에 타임 스탬프 저장

lottogame 2020. 9. 8. 21:55
반응형

PHP를 사용하여 mysql 테이블에 타임 스탬프 저장


timestamp데이터 유형 이있는 MySQL 테이블에 필드가 있습니다. 그 테이블에 데이터를 저장하고 있습니다. 그러나 타임 스탬프 ( 1299762201428)를 레코드에 전달 하면 값 0000-00-00 00:00:00이 해당 테이블에 자동으로 저장됩니다 .

타임 스탬프를 MySQL 테이블에 어떻게 저장할 수 있습니까?

INSERT진술 은 다음과 같습니다 .

INSERT INTO table_name (id,d_id,l_id,connection,s_time,upload_items_count,download_items_count,t_time,status)
VALUES (1,5,9,'2',1299762201428,5,10,20,'1'),
       (2,5,9,'2',1299762201428,5,10,20,'1')

이렇게 지나가 다

date('Y-m-d H:i:s','1299762201428')

안녕하세요,이 FROM_UNIXTIME()기능을 사용하세요.

이렇게 :

INSERT INTO table_name
(id,d_id,l_id,connection,s_time,upload_items_count,download_items_count,t_time,status)
VALUES
(1,5,9,'2',FROM_UNIXTIME(1299762201428),5,10,20,'1'), 
(2,5,9,'2',FROM_UNIXTIME(1299762201428),5,10,20,'1')

$created_date = date("Y-m-d H:i:s");
$sql = "INSERT INTO $tbl_name(created_date)VALUES('$created_date')";
$result = mysql_query($sql);

명확히해야 할 몇 가지 :

  • MySQL 타임 스탬프 필드 유형은 유닉스 타임 스탬프가 아니라 datetime-kind 값을 저장합니다.
  • UNIX 타임 스탬프는 일반 int 유형의 숫자입니다.
  • 당신이 말하는 타임 스탬프는 일반적인 유닉스 타임 스탬프가 아니라 밀리 초 단위의 타임 스탬프입니다.

따라서 정답은

$timestamp = '1299762201428';
$date = date('Y-m-d H:i:s', substr($timestamp, 0, -3));

데이터 유형 ' bigint unsigned '는이 요구 사항에 적합 할 수 있습니다.


나는 당신이 값을 저장하려는 필드가 datetime 필드 가 아니라고 생각하지만 타임 스탬프에 대해서도 같은 것 같습니다 . 그렇다면 mysql은 형식이 년-월-일시 : 분 : 초가 될 것으로 예상합니다. 타임 스탬프를 저장하려면 다음과 같은 쿼리를 사용하여 필드를 숫자로 변환해야합니다.

alter table <table_name> change <field> <field> bigint unsigned

현재 시간을 사용하는 경우 now () 또는 current_timestamp를 사용할 수 있습니다.


사용 FROM_UNIXTIME().

참고 : 1299762201428은 밀리 초 타임 스탬프 (JavaScript의 Date () * 1과 같은)처럼 보이며이를 1000으로 나누어야합니다.


테이블의 필드 유형을 확인하면 타임 스탬프 값이 데이터 유형에 저장됩니다 bigint.

datetime유형이 아님


이렇게해야합니다.

  $time = new DateTime; 

타임 스탬프가 현재 시간이면 mysql NOW()함수를 사용할 수 있습니다.


Use datetime field type. It comes with many advantages like human readability (nobody reads timestamps) and MySQL functions.

To convert from a unix timestamp, you can use MySQL function FROM_UNIXTIME(1299762201428). To convert back you can use UNIX_TIMESTAMP: SELECT UNIX_TIMESTAMP(t_time) FROM table_name.

Of course, if you don't like MySQL function, you could always use PHP: 'INSERT INTO table_name SET t_time = ' . date('Y-m-d H:i:s', $unix_timestamp).


Better is use datatype varchar(15).


You can use now() as well in your query, i.e. :

insert into table (time) values(now());

It will use the current timestamp.


You can do: $date = \gmdate(\DATE_ISO8601);.


If I know the database is MySQL, I'll use the NOW() function like this:

INSERT INTO table_name
   (id, name, created_at) 
VALUES 
   (1, 'Gordon', NOW()) 

참고URL : https://stackoverflow.com/questions/5632662/saving-timestamp-in-mysql-table-using-php

반응형