Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/241.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php MySQL-将日期和时间保存为DATETIME vs将日期和时间保存为字符串_Php_Mysql_Date_Datetime - Fatal编程技术网

Php MySQL-将日期和时间保存为DATETIME vs将日期和时间保存为字符串

Php MySQL-将日期和时间保存为DATETIME vs将日期和时间保存为字符串,php,mysql,date,datetime,Php,Mysql,Date,Datetime,我需要存储一个由日期和时间组成的截止日期,例如2016-05-02 19:02。我目前使用的字段的数据类型为DATETIME,但问题是它会自动将其保存为2016-05-02 19:02:00 作为一种解决方案,我正在考虑将日期保存在字符串字段中 所以我想知道我是否应该这样做?有什么性能优势/劣势吗?不要与数据库对抗。使用内置类型,除非你真的需要他们不能提供的东西,否则我会说不太可能。我的意思是你应该用时间,日期或类似的时间和日期。然后,您可以进行计算,而无需转换值等 如果你不需要秒数,那就一直保

我需要存储一个由日期和时间组成的截止日期,例如2016-05-02 19:02。我目前使用的字段的数据类型为DATETIME,但问题是它会自动将其保存为2016-05-02 19:02:00

作为一种解决方案,我正在考虑将日期保存在字符串字段中


所以我想知道我是否应该这样做?有什么性能优势/劣势吗?

不要与数据库对抗。使用内置类型,除非你真的需要他们不能提供的东西,否则我会说不太可能。我的意思是你应该用时间,日期或类似的时间和日期。然后,您可以进行计算,而无需转换值等

如果你不需要秒数,那就一直保持秒数为00


是否使用DATETIME、DATE&TIME或TIMESTAMP取决于您,取决于您如何使用数据。选择在当前情况下最有意义的替代方案。

不要与数据库抗争。使用内置类型,除非你真的需要他们不能提供的东西,否则我会说不太可能。我的意思是你应该用时间,日期或类似的时间和日期。然后,您可以进行计算,而无需转换值等

如果你不需要秒数,那就一直保持秒数为00


是否使用DATETIME、DATE&TIME或TIMESTAMP取决于您,取决于您如何使用数据。选择在当前情况下最有意义的替代方案。

如另一个答案中所述,应尽可能始终使用内置数据类型

在您的情况下,坚持使用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)
参考:

如另一个答案中所述,应尽可能始终使用内置数据类型

在您的情况下,坚持使用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)
参考:

不应将日期保存为字符串,而应能够在SQL查询中仅获取日期而不获取时间。您应该显示SQL查询的外观。我需要同时保存时间和日期。问题是,存储时增加了秒数存储秒数有什么问题?这就是约会。将日期保存为字符串会浪费时间,尤其是在检索时。你失去了使用像BETWEEN这样的运算符的能力。只是不喜欢存储不需要的秒数。所以我开始怀疑是否最好将其保存为字符串。但是阅读您的参数,它似乎不是这样的,所以我想我将坚持使用DATETIME。与其将日期保存为字符串,您应该能够在SQL查询中只获取日期而不获取时间。您应该显示SQL查询的外观。我需要同时保存时间和日期。问题是,存储时增加了秒数存储秒数有什么问题?这就是约会。将日期保存为字符串会浪费时间,尤其是在检索时。你失去了使用像BETWEEN这样的运算符的能力。只是不喜欢存储不需要的秒数。所以我开始怀疑是否最好将其保存为字符串。但从你们的论点来看,似乎并不是这样,所以我想我会坚持使用DATETIME。