MySQL 쿼리에서 타임 스탬프를 날짜로 변환


188

timestampMySQL에서 날짜를 날짜 로 변환하고 싶습니다 .

user.registration 필드를 텍스트 파일로 형식화하고 싶습니다 yyyy-mm-dd.

내 SQL은 다음과 같습니다.

$sql = requestSQL("SELECT user.email, 
                   info.name, 
                   FROM_UNIXTIME(user.registration),
                   info.news
                   FROM user, info 
                   WHERE user.id = info.id ", "export members");

또한 날짜 변환을 시도했습니다.

DATE_FORMAT(user.registration, '%d/%m/%Y')
DATE(user.registration)

텍스트 파일을 작성하기 전에 결과를 에코하고 다음을 얻습니다.

email1; 이름 1; DATE_FORMAT (사용자 등록, '% d / % m / % Y'); news1

email2; 이름 2; 뉴스 2

해당 필드를 날짜로 어떻게 변환합니까?


파일을 정확히 그렇게 저장합니까? SQL 쿼리를 실행하는 데 사용하는 코드는 무엇입니까?
seanbreeden

1
내 질문을 편집했습니다. requeteSQL이 쿼리를 실행 중입니다.
remyremy

답변:


373
DATE_FORMAT(FROM_UNIXTIME(`user.registration`), '%e %b %Y') AS 'date_formatted'

2
() FROM_UNIXTIME (user.registration, '% 전자 %의 B 형 % Y') 즉, DATE_FORMAT AS 'DATE_FORMATTED'의 MySQL 5.6.23로, 나는 FROM_UNIXTIME ()에 값을 직접 입력해야합니다 것을 발견
JESii

SELECT * FROM Users WHERE DATE_FORMAT (FROM_UNIXTIME ( users. user_created_at), '% Y- % b- % e') = '2015-03-06'이 올바른 형식입니까, 아니면 수정해야합니까?
Dheeraj Thedijje

2
@DheerajThedijje 2018-Nov-6으로 표시됩니다. '%Y-%m-%d'PHP로 형식을 지정할 때 찾고있을 수 있습니다. (date('Y-m-d',$row->user_created_at))이 변종 (SQL 및 PHP 모두)은 2018-11-06로 표시됩니다.
Chris S.

"hh : mm : ss"와 같은 방식으로 시간을 추가하려는 경우 형식 문자열 '% H : % i : % s'에 추가하십시오.
luis.ap.uyen

64

MYSQL에서 타임 스탬프를 날짜로 변환

정수 타임 스탬프를 사용하여 테이블을 만듭니다.

mysql> create table foo(id INT, mytimestamp INT(11));
Query OK, 0 rows affected (0.02 sec)

일부 값을 삽입

mysql> insert into foo values(1, 1381262848);
Query OK, 1 row affected (0.01 sec)

구경하다

mysql> select * from foo;
+------+-------------+
| id   | mytimestamp |
+------+-------------+
|    1 |  1381262848 |
+------+-------------+
1 row in set (0.00 sec)

숫자를 타임 스탬프로 변환하십시오.

mysql> select id, from_unixtime(mytimestamp) from foo;
+------+----------------------------+
| id   | from_unixtime(mytimestamp) |
+------+----------------------------+
|    1 | 2013-10-08 16:07:28        |
+------+----------------------------+
1 row in set (0.00 sec)

읽을 수있는 형식으로 변환하십시오.

mysql> select id, from_unixtime(mytimestamp, '%Y %D %M %H:%i:%s') from foo;
+------+-------------------------------------------------+
| id   | from_unixtime(mytimestamp, '%Y %D %M %H:%i:%s') |
+------+-------------------------------------------------+
|    1 | 2013 8th October 04:07:28                       |
+------+-------------------------------------------------+
1 row in set (0.00 sec)


61

그냥 날짜를 얻으려면 할 수 cast있습니다

cast(user.registration as date)

특정 형식 사용을 얻으려면 date_format

date_format(registration, '%Y-%m-%d')

SQLFiddle 데모


또한, 주조 (user.registration 날짜 등)와 동일한 결과를 제공하는 필드의 값 대신 표시
remyremy

5
이것은 작동했지만-cast (from_unixtime (user.registration) AS 날짜)
Eric Ness

나는 그것이 나를 위해뿐만 아니라 가능한 감사 특정 날짜 형식을 가지고
saber tabatabaee yazdi

"DATETIME"을 사용하여시와 분도 가져옵니다
Enrique

이 답변은 짧고 명확한 해결책이라고 생각합니다. 나는 이것을 선호한다.
로마 Matveev

18

은 IF registration필드 유형 참으로 TIMESTAMP당신은 할 수 있어야한다 :

$sql = "SELECT user.email, 
           info.name, 
           DATE(user.registration), 
           info.news
      FROM user, 
           info 
     WHERE user.id = info.id ";

등록은 yyyy-mm-dd로 표시되어야합니다.


대신 필드의 값의 표시입니다 DATE (user.registration) : 나는 시도했지만 나는 같은 결과를 얻을 수
remyremy

누군가가 제안했듯이 mysql 클라이언트를 직접 사용하여 쿼리를 성공적으로 실행할 수 있습니까? requeteSQL 함수에 대해 들어 보지 못했습니다. 정확히 무엇을합니까?
cs0lar

불행하게도 나는 ... 오류가 이메일을 보낼 경우 ... 나는 requeteSQL를 제공하고, 기본적으로 그냥 쿼리 및 테스트를 실행 직접, 난 내 자신의 서버가없는 MySQL의 클라이언트를 사용할 수 없습니다입니다
remyremy

2
실제로 내 필드가 TIMESTAMP가 아닌 BIGINT 유형이라는 것을 깨달았습니다. 내용 만 타임 스탬프 (1328649722) 였기 때문에 작동하지 않았습니다. 이제 FROM_UNIXTIME으로 모든 것이 좋습니다!
remyremy

이 부분은 날짜 부분 만 가져 와서 datetime으로 시도해 보았습니다.
ericsicons

10

mysql의 DATE 함수를 사용하십시오.

mysql> select DATE(mytimestamp) from foo;

5
SELECT DATE(UNIX_TIMESTAMP())NULL내 MySQL 5.7.14에서 침
Xenos

DATE (CURRENT_TIMESTAMP ()) 시도
Morey


2

출력에서 쿼리를 얻는 경우 실제로 결과를 에코하는 코드를 표시해야합니다. requeteSQL을 호출하는 코드를 게시 할 수 있습니까?

예를 들어, PHP에서 작은 따옴표를 사용한 경우 값이 아닌 변수 이름이 인쇄됩니다

echo 'foo is $foo'; // foo is $foo

이것은 귀하의 문제와 정확히 일치하며 이것이 원인이라는 긍정적입니다.

또한 @ 기호를 제거하여 더 많은 정보를 제공하여 도움이되는지 확인하십시오.

그래서

$SQL_result = @mysql_query($SQL_requete); // run the query

된다

  $SQL_result = mysql_query($SQL_requete); // run the query

쿼리에서 오류가 발생하면 오류 억제가 중지됩니다.


2

여기에 설명 된대로 '날짜'기능으로 수행했습니다 .

(SELECT count(*) as the-counts,(date(timestamp)) as the-timestamps FROM `user_data` WHERE 1 group BY the-timestamps)

2

FROM_UNIXTIME(unix_timestamp, [format]) 당신이 필요한 전부입니다

FROM_UNIXTIME(user.registration, '%Y-%m-%d') AS 'date_formatted'

FROM_UNIXTIME숫자 값을 가져 와서 DATE객체로 변환
하거나 형식 문자열이 제공되면 문자열로 반환합니다.

오래된 솔루션은 초기 날짜 객체를 가져와 두 번째 함수로 형식을 지정하는 것이 었습니다 DATE_FORMAT...하지만 더 이상 필요하지 않습니다.


1

시험:

SELECT strftime("%Y-%d-%m", col_name, 'unixepoch') AS col_name

시간 소인을 밀리 초 단위로 yyyy-mm-dd 문자열로 형식화합니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.