我需要存储一个截止日期,包括日期和时间(例如2016-05-02 19:02)。我目前正在使用具有DATETIME作为数据类型的字段,但问题是它会自动将其保存为2016-05-02 19:02:00。
作为解决方案,我想将日期保存在字符串字段中。
所以我想知道我是否应该这样做?任何性能优势/劣势?
答案 0 :(得分:1)
不要打击数据库。使用内置类型,除非你真的需要他们无法提供的东西(尽管我不太可能这样做)。 (并且我的意思是你应该使用TIME,DATE或类似的时间和日期。然后你可以进行计算而不必转换值等)
如果你不需要秒,那么就一直保持00。
您是否使用DATETIME,DATE& TIME或者TIMESTAMP取决于您,您如何使用数据。选择在当前情况下最有意义的替代方案。
答案 1 :(得分: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)