programing

MySQL SELECT에서 ISO 8601로 포맷 날짜

bestcode 2022. 9. 30. 11:15
반응형

MySQL SELECT에서 ISO 8601로 포맷 날짜

표준 타임스탬프에서 데이터베이스에서 날짜를 가져와 ISO 8601로 표시하려고 합니다.PHP에서는 쉽게 할 수 없기 때문에 SELECT 스테이트먼트에서 하려고 합니다.다음과 같은 오류가 표시됩니다.

SELECT * FROM table_name ORDER BY id DESC DATE_FORMAT(date,"%Y-%m-%dT%TZ")

내가 뭘 잘못하고 있지?

DATE_FORMAT(DateColumn)에 있어야 합니다.SELECT리스트:

SELECT DATE_FORMAT(date, '%Y-%m-%dT%TZ') AS date_formatted
FROM table_name 
ORDER BY id DESC 

이건 내게 효과가 있었다.

DATE_FORMAT( CONVERT_TZ(`timestamp`, @@session.time_zone, '+00:00')  ,'%Y-%m-%dT%TZ')

DATE_FORMAT은 MySQL 날짜 열에서만 작동하며 타임스탬프는 작동하지 않습니다.

UNIX 타임스탬프는 1970년1월 1일 UTC 이후의 초수를 포함한 정수입니다.ISO 8601 날짜로 포맷하려면 대신 FROM_UNIXTIME() 함수를 사용해야 합니다.

FROM_UNIXTIME은 DATE_FORMAT과 동일한 형식 문자열을 사용하므로 'created'라는 이름의 열을 포맷하려면 다음과 같이 하십시오.

SELECT created /* e.g. 1288799488 */ , 
       FROM_UNIXTIME(created,'%Y-%m-%dT%TZ') /* e.g. 2010-11-03T08:51:28Z */
FROM table_name

데이터베이스에서 날짜 필드를 로드하고 PHP를 사용하여 ISO 형식으로 변환하는 것은 간단합니다.c문자열을 PHP로 포맷date: http://www.php.net/manual/en/function.date.php

echo date('c'); // expected "2013-03-08T14:45:37+05:00"

왜 PHP로 하는 것이 어렵습니까?

date("Y-m-d\TH:i:sO",strtotime($sqldata['time']));

아무튼 그거는DATE_FORMAT선택할 필드에 있어야 합니다.끝에 붙이지 않습니다.

DATE_FORMAT(date, '%Y-%m-%dT%TZ')있어야 한다select절을 클릭합니다.

SELECT DATE_FORMAT(date, '%Y-%m-%dT%TZ') 
FROM table_name 
ORDER BY id DESC 

다음과 같이 DATE_FORMAT을 쿼리의 선택 부분으로 이동해야 합니다.

SELECT *, DATE_FORMAT(date,"%Y-%m-%dT%TZ") AS date FROM table_name ORDER BY id DESC

언급URL : https://stackoverflow.com/questions/9321809/format-date-in-mysql-select-as-iso-8601

반응형