0

有一个字段curdate,比如

 <?php
    $date = date_default_timezone_set('Asia/Kolkata');
    $time= date("l, F d, Y h:i:s A"); 
    ?>
    <input type="hidden" value="<?php echo $time; ?>" name="curdate" id="curdate"/>

它将需要当前日期和时间到数据库。

还有一列'curdatesql',将上面的时间转换成mysql时间格式:

 "' . $this->SanitizeForSQL($formvars['curdate']) . '",
 STR_TO_DATE("' . $this->SanitizeForSQL($formvars['curdate']) . '","%W, %M %d, %Y %h:%i:%s %p"),

问题是它没有将 AM、PM 部分放入 mysql 表中……这是为什么呢?

它像:2013-07-20 13:26:35(没有 AM PM)。

4

2 回答 2

1

MySQL 有几种日期和时间格式。您似乎使用 DATETIME 以显示值的形式YYYY-MM-DD HH:MM:SS。请注意,这HH是 24 小时制。

您不应该额外存储 AM/PM,因为这将是完全多余的。在最好的情况下,你会浪费内存,在最坏的情况下,你会得到不一致。

相反,您应该在表示层中处理这个问题:

if(hh >= 12) {
    PM
} else {
    AM
}

hours = hh % 12

请注意,您可以使用 MySQL DATE_FORMAT来获取您喜欢的格式。它可能看起来像这样:

SELECT DATE_FORMAT(myStoredDatabaseAttribute, '%h %p') FROM myTable
于 2013-07-20T09:59:47.927 回答
0

我的 sql 日期以 24 小时格式存储,也以二进制格式存储。如果表示需要 12 小时显示格式,则必须在表示层中处理它。

于 2013-07-20T09:36:56.997 回答