2012-11-20 2 views
3

Delphi TDateTIme을 저장해야합니까? 아니면 Unix 타임 스탬프로 먼저 변환해야합니까? 또는 mayeb은 문자열로 eeven?MySql에 날짜/시간을 저장하는 가장 좋은 방법은 무엇입니까?

MySql에서 열을 어떻게 선언해야합니까? Double, DateTime (또는 Unix 타임 스탬프를 사용하는 경우 Integer)?

Whta가 "정확하다"또는 "yyyy mm dd hh : mm : ss"(또는 유사)의 문자열을 표시 할 수 있고 또한 경과 시간을 얻을 수 있기를 원하는 경우 가장 쉬운 방법은 무엇입니까? 두 값을 비교하고 있습니까?

Btw를 사용하면 프로그램이 한 TIMEM 영역에서만 사용되며 일광 절약 시간제는 없습니다.

나는 혼란스럽고 어디서나 토론 된 것을 찾을 수없는 것 같습니다. 유용한 URL이 있습니까?

+3

시간대를 저장하려는 경우 – njzk2

+0

+1 질문이 업데이트됩니다. 고마워, @ njzk2 – Mawg

답변

9
  1. 나는 델파이 TDateTime으로 저장, 혹은 최초의 유닉스 타임 스탬프로 변환해야 하는가?

    일반적으로 데이터베이스 계층의 데이터 형식은 가능한 한 의미가 있어야하며 해석 할 응용 프로그램에 의존하지 않아야합니다. @Jim DeLaHunt says으로, 이것은 데이터베이스가 필요에 따라 SQL에서 쉽게 조작/해석 할 수있게합니다 (또한 앞으로 다른 응용 프로그램 코드베이스에서 동일한 데이터에 쉽게 액세스 할 수있게합니다). DATETIMETIMESTAMP :

    MySQL은 날짜와 시간 모두를 저장하는 두있는 five temporal types을 가지고 있습니다.

    다른 사람이 언급했듯이

    , 차이는 아래 당신이 시간대를 저장하고자하는지에 온다 - 나는 그것을보고 꽤 혼란 방법은 찾을 수 있지만 :

    • TIMESTAMP 변환 세션의 time_zone 변수를 사용하여 UTC 타임 스탬프에 입력 한 다음 다시 출력하기 위해 : 정확한 시간을 지정하는 데 유용합니다.

    • DATETIME은 단순히 달력과 시계 사진을 촬영하는 것과 마찬가지로 시간대와 상관없이 날짜와 시간을 저장하기 만하면됩니다. 이는 전 세계 동일한 현지 시간에 발생하는 이벤트를 지정하는 데 유용합니다.

  2. 가 어떻게 MySQL의에서 열을 선언해야

    ? Double, DateTime (또는 Unix 타임 스탬프를 사용하는 경우 Integer)?

    다른 열을 선언하는 것처럼 열 이름 뒤에 관련 데이터 형식을 지정합니다.

    TIMESTAMP에는 automatic update과 같은 추가 기능이 있으므로 원하는 경우 열 선언에서 비활성화 할 수 있습니다.

  3. Whta은 "올바른", 또는 내가이 문자열을 표시 할 수 있도록하려면 가장 쉬운 또한 (또는 유사)과를 얻을 수있을 것 "YYYY의 mm의 DD의 HH : SS : mm를" 두 값을 비교 한 경과 시간?

    위의 시간 형식 중 하나를 사용하면 필요에 따라 date functions을 사용하여이 모든 작업을 수행 할 수 있습니다. TIMESTAMPDATETIME 유형의 기본 출력은 'YYYY-MM-DD HH:MM:SS' 형식의 문자열입니다.특히

    , 두 값을 비교 한 「경과 시간」예 MySQL의의 TIMEDIFF() 기능을 얻을 수있다 :

    SELECT TIMEDIFF(end, start) AS elapsed 
    FROM my_table 
    WHERE ... 
    
1

link이 유용 할 수 있습니다. 시간대를 사용할지 여부에 따라 다르지만 지금은 필요하지 않더라도 나중에 사용할 수 없다면 다시 고려하십시오.

DATETIME을 사용합니다. 인간이 읽는 것이 더 쉽습니다.

4

MySQL은이 하나가 SQL의 날짜 함수 (년, 월, 등)를 사용할 수 있습니다으로 선호된다 기본 날짜 형식이 있어야합니다.

내 데이터베이스 테이블 중 하나에 Delphi datetime으로 정의 된 필드가 있습니다.이 필드를 필터링하거나 값을 표시하기가 매우 어렵 기 때문에이 필드는 실수였습니다. 이 두 작업 모두 데이터베이스에서와 달리 호출 프로그램에서 특별한 처리가 필요합니다.

1

MySQL Reference Manual, 11.3. Date and Time Types 및 약 12.7. Date and Time Functions의 MySQL 날짜 및 시간 유형에 대한 모든 내용을 읽을 수 있습니다.

MySQL과 SQL Server를 사용해 본 경험은 Delphi 그 자체가 아니지만 날짜와 시간 값을 데이터베이스의 날짜와 시간 형식으로 저장하는 데 적합합니다. 이를 통해 데이터베이스의 날짜 및 시간 함수를 사용하고 최적화 된 날짜 및 시간 기능 구현을 활용할 수 있습니다. datetime 값을 Double 또는 Integer Unix 타임 스탬프와 같은 일반적인 것으로 저장하면 최적화가 부족하고 날짜 및 시간 함수를 사용자가 직접 구현해야합니다. 영업 이익의 편집 된 질문에 따라

업데이트 :

DateFormat() function 같이 당신에게 문자열을 줄 수있다 "YYYY mm dd를시 : 분 : 초"를 "%Y %m %d %k:%i:%s" 같은 형식 문자열을 사용하여.

TimeDiff() function은 두 datetime 값의 차이를 나타내는 시간 간격 유형을 제공합니다.

0

는 날짜를 저장하는 가장 좋은 방법을 설명 포스트가 있습니다 MySQL은 같은

MySQL Integer vs DateTime indexMySQL DATETIME vs TIMESTAMP vs INT performance and benchmarking with MyISAM

당신이 결정하는 경우 유닉스 타임 스탬프로 날짜를 변환하여 정수로 저장

다음를 찾아보십시오 :

  • 델파이 기능 DateTimeToUnix (StrToDateTime를 ('2013년 11월 22일 16시 34분 45초 '));
    가 대화

  • MySQL의 기능 UNIX_TIMESTAMP현지 시간대를 사용 ('2013년 11월 22일는 16시 34분 45초') 는 대화의 GMT TIME ZONE를 사용

관련 문제