>데이터 베이스 >MySQL 튜토리얼 >PHP에서 MySQL로 날짜를 삽입할 때 날짜 형식 충돌을 해결하는 방법은 무엇입니까?

PHP에서 MySQL로 날짜를 삽입할 때 날짜 형식 충돌을 해결하는 방법은 무엇입니까?

DDD
DDD원래의
2024-12-06 18:14:11275검색

How to Resolve Date Format Conflicts When Inserting Dates from PHP into MySQL?

PHP MySQL 삽입의 날짜 형식 불일치

PHP를 사용하여 MySQL 데이터베이스에 날짜를 삽입하려고 하면 다음과 같은 오류가 발생할 수 있습니다. 형식이 일치하지 않습니다. 널리 사용되는 jQuery 날짜 선택기 형식인 "08/25/2012"는 MySQL이 지원하는 날짜 형식과 충돌합니다.

이 문제를 해결하려면 MySQL의 날짜 리터럴 요구 사항을 이해하는 것이 중요합니다.

  1. 문자열 형식: YYYY-MM-DD 또는 YY-MM-DD(선택 사항 포함) 구분 기호. 예: '2012-12-31', '2012/12/31', '2012^12^31'.
  2. 구분자가 없는 문자열 형식: YYYYMMDD 또는 YYMMDD. 예: '20070523', '070523'('2007-05-23'으로 해석됨).
  3. 숫자 형식: YYYYMMDD 또는 YYMMDD. 예: 19830905, 830905('1983-09-05'로 해석됨).

"08/25/2012" 형식은 이러한 규칙을 따르지 않으므로 변환해야 합니다. 여러 가지 옵션을 사용할 수 있습니다:

1. jQuery Datepicker 형식 변환

지원되는 형식으로 날짜를 제공하도록 datepicker를 구성하세요.

$( "selector" ).datepicker({
    altField : "#actualDate"
    altFormat: "yyyy-mm-dd"
});

또는 dateFormat 옵션을 설정하세요.

$( "selector" ).datepicker({
    dateFormat: "yyyy-mm-dd"
});

2. MySQL의 STR_TO_DATE() 함수 사용

삽입 중 문자열 변환:

INSERT INTO user_date VALUES ('', '$name', STR_TO_DATE('$date', '%m/%d/%Y'))

3. PHP의 DateTime 객체를 사용하여 변환

적절한 형식의 문자열 또는 UNIX 타임스탬프 얻기:

$dt = \DateTime::createFromFormat('m/d/Y', $_POST['date']);
$date = $dt->format('Y-m-d');
$timestamp = $dt->getTimestamp();

UNIX 타임스탬프 삽입의 경우:

INSERT INTO user_date VALUES ('', '$name', FROM_UNIXTIME($timestamp))

4 . 수동 문자열 조작

날짜 부분을 추출하고 유효한 형식으로 연결합니다.

$parts = explode('/', $_POST['date']);
$date  = "$parts[2]-$parts[0]-$parts[1]";

주의:

  • SQL 삽입을 방지하려면 준비된 문을 사용하세요.
  • DATE 사용을 고려하세요. 날짜 전용 값의 경우 DATETIME 또는 TIMESTAMP 대신 유형을 입력하세요.

위 내용은 PHP에서 MySQL로 날짜를 삽입할 때 날짜 형식 충돌을 해결하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.