如何在Mysql数据库中插入AM和PM?

时间:2018-05-16 05:21:49

标签: php mysql laravel

这是我的价值,我将在我的数据库中插入

[phoneinterview] => 2018-05-16 10:28 PM

在我的数据库中,我有这样的字段

phoneinterview  timestamp

但它的插入如下:

2018-05-16 10:28:00     

其实我想这样插入:

2018-05-16 10:28 PM

4 个答案:

答案 0 :(得分:1)

确定。当您选择用于存储日期的timestamp或datetime数据类型时,它不会将AM和PM值存储在数据库表字段中。对此最好的解决方案是检索日期并将其与AM / PM手动转换为日期和时间。

另一种解决方案是使用varchar的数据类型而不是时间戳,但这是不值得推荐的。

答案 1 :(得分:1)

如果您在数据库中使用datetime字段,则不能,但如果将字段更改为varchar,则可以按照自己喜欢的方式保存。我会建议反对它。为什么要保存格式化的时间?最佳做法是将日期保存在datetime字段中,然后在您希望按照您希望的方式显示时。在Laravel你可以使用这样的mutator来做到这一点:

public function getPhoneinterviewAttribute() {
    return \Carbon\Carbon::now(
        $this->attributes['phoneinterview']
    )->format('g:i A');
}

另一方面:当您扩展到人们不使用AM / PM的区域时,您可以轻松地将其格式化为其语言环境。

答案 2 :(得分:1)

MySQL使用格式'Y-m-d H:i:s'来存储日期,因此如果您正在使用除此之外的任何内容,则需要先将其转换为此格式。这可以通过DateTime::createFromFormat()

完成
$date = DateTime::createFromFormat('Y-m-d g:i a', '2018-05-16 10:28 PM');

这将创建一个可以轻松为MySQL格式化的DateTime对象:

$date->format('Y-m-d H:i:s');

答案 3 :(得分:1)

当您使用datetime数据类型时,它正在存储2018-05-16 10:28:00。但是如果要存储AM/PM,则需要使用varchar数据类型。

我建议您在获取时间戳数据时使用->format();。这将根据您的意愿转换日期时间格式。

目前,您希望在时间之后显示AM/PM,请使用它:->format('g:i A');这将显示10:28 PM之类的时间。

希望这可以帮助你!!