2016-06-06 8 views
0

날짜와 시간으로 구성된 데드 라인을 저장해야합니다 (예 : 2016-05-02 19:02). 현재 데이터 형식으로 DATETIME이있는 필드를 사용하고 있지만 문제는 자동으로 2016-05-02 19:02:00으로 저장한다는 것입니다.MySQL - 날짜 및 시간을 DATETIME으로 저장하고 날짜 및 시간을 문자열로 저장하는 것으로 나타냅니다.

해결책으로 나는 문자열 필드에 날짜를 저장하려고 생각하고있었습니다.

내가 그렇게해야하는지 궁금하니? 어떤 성능 장점/단점?

+0

을 대신 날짜를 저장 문자열로, 당신은 SQL 쿼리에서 시간없이 날짜를 얻을 수 있어야합니다. 당신은 당신의 SQL 쿼리가 어떻게 보이는지 보여 주어야합니다. –

+0

시간과 날짜를 모두 저장해야합니다. 문제는 저장하는 데 추가 된 초입니다. – NorthernLights

+0

초를 저장하는 데 문제가 있습니까? 그것이 날짜입니다. 날짜를 문자열로 저장하는 데 시간을 낭비 할 수 있습니다 (특히 검색 할 때). 그리고'BETWEEN'과 같은 연산자를 사용할 수있는 능력을 잃게됩니다. – miken32

답변

1

데이터베이스와 경쟁하지 마십시오. 에 제공 할 수없는 것을 필요로하지 않는 한 기본 유형을 사용하십시오 (그렇다고는 말할 수 없겠지만). (그리고이 말은 시간과 날짜에 대해 TIME, DATE 등을 사용해야한다는 것입니다. 그런 다음 값을 변환하지 않고도 계산할 수 있습니다.)

초를 필요로하지 않으면 00 항상.

DATETIME, DATE & TIME 또는 TIMESTAMP 사용 여부는 데이터 사용 방법에 달려 있습니다. 현재 상황에서 가장 적합한 대안을 선택하십시오.

1

다른 대답에서 언급했듯이 가능한 경우 항상 기본 제공 데이터 형식을 사용해야합니다. 귀하의 경우에는

DATETIME 고수하고 그렇게처럼 DATE_FORMAT 기능을 사용하여 쿼리에 필요한 어떤 형식으로 변환 :

mysql> SELECT * FROM `mytable`; 
+----+---------------------+ 
| id | mydatetime   | 
+----+---------------------+ 
| 1 | 2016-06-06 14:12:00 | 
+----+---------------------+ 
1 row in set (0.00 sec) 

mysql> SELECT DATE_FORMAT(`mydatetime`,'%b %d %Y %h:%i %p') AS `mydatetime` FROM `mytable`; 
+----------------------+ 
| mydatetime   | 
+----------------------+ 
| Jun 06 2016 02:12 PM | 
+----------------------+ 
1 row in set (0.00 sec) 

참조 : http://www.w3schools.com/sql/func_date_format.asp

관련 문제