时间戳数据类型不能存储某些日期格式


timestamp data type can not store some date format

时间戳数据类型不能接受或存储这种日期格式"星期四17日2013年1月在11:47:49 AM ",但这是我想在数据库中存储的格式,因为客户端喜欢这种格式。我可以使用varchar或文本存储它,但这些数据类型不能允许我使用TIMESTAMPDIFF函数进行一些分钟计算。请帮忙:

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

下面是一个小示例:http://www.plus2net.com/php_tutorial/php_date_time.php

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

您描述的存储问题可以通过使用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对象文档,了解您可以使用哪些方法来按照客户端的要求进行格式化。不包含关键字UTC的方法返回的值已经转换为浏览器的时区(操作系统配置的时区),所以你不必麻烦地询问用户的时区。

您应该按照- TIMESTAMP格式存储时间戳值。

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

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