Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/56.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数据库中插入AM和PM?_Php_Mysql_Laravel - Fatal编程技术网

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

Php 如何在Mysql数据库中插入AM和PM?,php,mysql,laravel,Php,Mysql,Laravel,这是我的值,我将在数据库中插入 [phoneinterview] => 2018-05-16 10:28 PM 在我的数据库中有这样的字段 phoneinterview timestamp 但它是这样的: 2018-05-16 10:28:00 实际上我想这样插入: 2018-05-16 10:28 PM public function getPhoneinterviewAttribute() { return \Carbon\Carbon::now(

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

[phoneinterview] => 2018-05-16 10:28 PM
在我的数据库中有这样的字段

phoneinterview  timestamp
但它是这样的:

2018-05-16 10:28:00     
实际上我想这样插入:

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

嗯。当您选择时间戳或日期时间数据类型来存储日期时,它不会在数据库表字段中存储AM和PM值。最好的解决方案是检索日期并将其与AM/PM一起手动转换为日期和时间


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

如果在数据库中使用
datetime
字段,则不能使用,但如果将字段更改为
varchar
,则可以按您喜欢的方式保存它。我建议不要这样做。为什么要保存格式化的时间?最佳做法是将日期保存在
datetime
字段中,然后在需要显示日期时按所需格式显示。在Laravel中,您可以使用如下所示的变异体:

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

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

MySQL使用格式
'Y-m-d H:i:s'
存储日期,因此如果您使用的是其他格式,则需要先将其转换为此格式。这可以通过以下方式实现:

这将创建一个DateTime对象,您可以轻松地为MySQL设置格式:

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

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

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

现在,当您想在时间之后显示
AM/PM
时,可以像这样使用:
->格式('g:ia')这将显示时间,如
10:28 PM


希望这对你有帮助

您用于存储日期的数据类型是什么?是datetime吗?在我的数据库中,我使用时间戳来存储数据。您可以使用
varchar
datatype,但这对它不好。您可以使用
->format()
来显示它!比如:
->格式('g:ia')谢谢大家现在它工作正常,在插入数据库时,我将h:I:s更改为h:I:s,在检索这些值时,我使用了g:I。从中得到的一般教训是,您应该始终以计算机可读的格式存储数据,并且仅在您希望显示数据时才将其转换为人类可读的格式。