timestamp数据类型无法存储某些日期格式

时间:2013-01-17 10:04:49

标签: php mysql

时间戳数据类型无法采用或存储此日期格式“2013年1月17日星期四上午11:47:49”但这是我想要存储在数据库中的格式,因为客户端喜欢这种格式。我可以使用varchar或text存储它,但这些数据类型不允许我使用TIMESTAMPDIFF函数进行一些分钟计算。任何帮助请:

4 个答案:

答案 0 :(得分:0)

存储的格式是真实的,您要显示的格式必须从那里开始计算。

这是一个小样本:http://www.plus2net.com/php_tutorial/php_date_time.php

答案 1 :(得分:0)

如果您只想要这种格式,请将字段的数据类型更改为VARCHAR,但最好将其存储为DATETIME / TIMESTAMP,然后在显示时您可以使用PHP的DATE格式以您想要的方式显示它。

答案 2 :(得分:0)

您描述的存储问题可以通过使用unix时间戳(INT),ISO8601(2013-01-17T19:47:49Z)或DATETIME(确保配置所有UTC)来代替那个长字符串来解决如果没有遇到时区和DST问题,很难解码。

只有在界面中显示日期或时间戳时才会转换为您想要的任何时区和格式。如果唯一的界面是浏览器,只需使用javascript的Date对象转换为本地时间(以您喜欢的任何格式)。

MySQL查询示例:

SELECT UNIX_TIMESTAMP(`datetime_stsuff`) FROM `whatever` LIMIT 1

SELECT `int_unixtimestamp_seconds` FROM `whatever` LIMIT 1

Javascript示例:

var objDateFromDatabase=new Date(<?php echo json_encode($nUnixTimestampFromDB);?>*1000);

//note that older browsers don't support the Z suffix ("Zulu time" (GMT or UTC)) so use +00:00 instead (2012-01-01T12:34:56+00:00).
var objDateFromDatabase=new Date(<?php echo json_encode($strISO8601TimestampFromDB);?>*1000);

请参阅MDN Date object docs了解您可以使用哪些方法格式化您的客户需求。不包含关键字UTC返回值的方法已经转换为浏览器的时区(操作系统配置的时区),因此您不必费心去询问用户的时区。

答案 3 :(得分:0)

您应该按原样存储timastamp值 - TIMESTAMP格式。

使用DATE_FORMAT函数格式化值,例如 -

SELECT DATE_FORMAT(column1, '%W %M %Y') FROM table1;