2012-04-04 5 views
0

데이터베이스에 재생 목록을 만들어 각 비디오가 플레이어에 의해 재생 될 때를 알아야합니다. 다음과 같이 사용합니다 : table playlist with: id, video_id, play_time 예를 들어 play_time이 2012-04-10 14:00:00 인 경우 동영상은 2012-04-10의 14:00:00에 재생해야하지만 사용자가있는 시간대와 관련이 있습니다. 있습니다.MySQL은 서로 다른 시간대에 재생 목록을 저장합니다

이 datetime 또는 timestamp에 대해 더 나은 점은 무엇입니까? MySQL manual에서

+1

당신은 UTC 모든 시간을 저장 한 다음 사용자의 로컬 TZ 변환을 할 수있는 응용 프로그램을 조정 나을 수 있습니다. – liquorvicar

+1

사용하는 것이 "더 나은"것이 중요한 이유는 무엇입니까? 사용자에게 시간대가 무엇인지 알려주는 정보가 분명히 필요합니다. 'datetime'을 사용하여 UTC (유럽/런던)에 저장하면'timestamp'를 사용하는 것과 같은 효과를 얻습니다. 기본값은 UTC입니다. 어떤 일이 생기더라도 사용자의 시간대에 대한 정보가 필요하므로 필요한 오프셋을 계산할 수 있습니다. 대답은 둘 다입니다. 두 유형 모두를 사용하여 날짜 데이터를 저장할 수 있습니다. 시간대 오프셋을 포함해야하는 필수 날짜로 검색어를 제공하는 앱입니다. –

답변

1

:

MySQL이 저장 UTC 현재 시간대에서 TIMESTAMP 값을 변환하고, 다시 UTC에서 검색을 위해 현재 시간대에. (DATETIME과 같은 다른 유형에서는 발생하지 않습니다.) 기본적으로 은 각 연결의 현재 시간대가 서버의 시간입니다. 시간대는 연결별로 설정할 수 있습니다. 시간대 설정이 일정한 경우 저장하는 값과 동일한 값을 얻게됩니다. TIMESTAMP 값을 저장 한 다음 시간대를 변경하고 값을 검색하는 경우 검색된 값은 저장 한 값과 다릅니다. 이는 동일한 시간대가 양방향에서 변환에 사용되지 않았기 때문에 발생합니다. 현재 시간대는 으로 time_zone 시스템 변수의 값으로 사용할 수 있습니다. 자세한 내용은 섹션 9.6, “MySQL Server Time Zone Support”을 참조하십시오.

그래서 대답은 : 타임 스탬프

관련 문제