programing

PHP의 SQL을 사용하여 초 단위로 날짜 시간 저장

skycolor 2023. 8. 15. 10:58
반응형

PHP의 SQL을 사용하여 초 단위로 날짜 시간 저장

데이터베이스에 티커 세부사항을 삽입하기 위해 아래 PHP에서 이 기능을 만들었습니다.json 데이터가 매 분마다 업데이트되기 때문에 datetime 필드를 초 단위로 데이터베이스에 저장하고 싶습니다.

function insert(){

        $jsonArray = json_decode(self::getTicker(), true);

        var_dump($jsonArray);

        foreach ($jsonArray as $value) {
            $high = $value['high'];
            $low = $value['low'];
            $last = $value['last'];
            $buy = $value["buy"];
            $sell = $value['sell'];
            $date = $value['date'];
            $vol = $value['vol'];
        }
        $dateF = gmdate("Y-m-d H:i:s", $date);

        $sql = "INSERT INTO `ticker_history`
        (`ticker_history_high`, 
        `ticker_history_low`, 
        `ticker_history_vol`, 
        `ticker_history_last`, 
        `ticker_history_buy`, 
        `ticker_history_sell`,
        `ticker_history_date`)
        VALUES 
        (?, ?, ?, ?, ?, ?, ?)";
        $stmt = $this->conn->prepare($sql);
        $stmt->bind_param("dddddss", $high,$low,$vol,$last,$buy,$sell,$dateF);
        $result = $stmt->execute();
        $stmt->close();

        if ($result) {
                // ticker successfully inserted
            return  print_r(TICKER_CREATED_SUCCESSFULLY);

        } else{
            return print_r(TICKER_CREATE_FAILED);
        }
}

datetime 열은 Y-m-d H:i:s 구조를 사용합니다.

항상 초를 저장합니다.그러나 PHP의 DateTime 클래스를 사용하여 다음과 같은 날짜 형식을 지정할 수 있습니다.

$date = new DateTime();
echo $date->format('Y-m-d H:i'); // outputs 2017-08-18 17:05

DB를 쿼리할 때 WHERE 절에서 다음과 같이 말할 수 있습니다.

...WHERE datecolumn = '".$date->format('Y-m-d H:i:00')."' etc

예:

$date = new DateTime();
echo $date->format('Y-m-d H:i:s')."\n"; // 2017-08-18 17:09:15
echo $date->format('Y-m-d H:i:00')."\n"; // 2017-08-18 17:09:00

실제로 보기: https://3v4l.org/D47pA

하지만 당신은 당신의 문자열을 DateTime 생성자에게 전달할 수 있습니다.

new DateTime($row['datecolumn']);

사용하다strtotime()-

$dateF = gmdate('g:ia', strtotime($date));

date() function-string date ( string $format [, int $timestamp = time() ] )어디서$timestamp정수 유닉스 타임스탬프입니다.

그냥 바꾸기$dateF여기까지:

gmdate('d-m-y H:i',strtotime($date)));

또는 SQL 쿼리에서 다음을 수행합니다.

DATE(date, '%Y-%M-%d %H:%i')

MARIADB에서:

DATE_FORMAT(date, '%H:%i')

올바른 MySQL/MariaDB 솔루션의 경우 다음을 적용합니다.

mysql> SELECT DATE_FORMAT(now(), "%Y-%m-%d %H:%i");
+--------------------------------------+
| DATE_FORMAT(now(), "%Y-%m-%d %H:%i") |
+--------------------------------------+
| 2017-08-21 21:35                     |
+--------------------------------------+

참고: 표에 저장된 값은 정확합니다.DATETIME또는TIMESTAMP2017-08-21 21:35:00.

이 접근 방식은 PHP에서 날짜를 계산하는 것보다 코딩이 덜합니다.

언급URL : https://stackoverflow.com/questions/45759502/store-datetime-without-seconds-using-sql-in-php

반응형