Php MYSQL时间戳在插入时为空

Php MYSQL时间戳在插入时为空,php,mysql,Php,Mysql,我使用查询将用户选择的时间戳添加到MYSQL表中 INSERT INTO schedule( pending_id, scheduled_time ) VALUES ( "477", TIME( STR_TO_DATE( "09/02/2016 12:33 PM", "%m/%d/%y %h:%i %p"))) 但是字段scheduled_time的值在DB中为NULL。可能是什么问题?尝试相同的查询,但使用大写%Y(4位数年份): 尝试相同的查询,但使用大写%Y(4位数年份): MySQL

我使用查询将用户选择的时间戳添加到MYSQL表中

INSERT INTO schedule( pending_id, scheduled_time ) 
VALUES (
"477", TIME( STR_TO_DATE( "09/02/2016 12:33 PM", "%m/%d/%y %h:%i %p")))

但是字段scheduled_time的值在DB中为NULL。可能是什么问题?

尝试相同的查询,但使用大写%Y(4位数年份):


尝试相同的查询,但使用大写%Y(4位数年份):

MySQL
TIME()
函数提取时间戳的时间部分。因此,您的
INSERT
查询与执行此操作相同:

INSERT INTO schedule (pending_id, scheduled_time)
VALUES ("477", '12:33:00')
换句话说,您实际上并没有插入时间戳,而是插入了一个时间字符串片段。这将导致插入一个
NULL

相反,您应该在调用
STR\u TO\u DATE
后立即停止:

INSERT INTO schedule (pending_id, scheduled_time)
VALUES ("477", STR_TO_DATE("09/02/2016 12:33 PM", "%m/%d/%Y %h:%i %p"))
那会变成什么

INSERT INTO schedule (pending_id, scheduled_time)
VALUES ("477", '2016-09-02 12:33:00')
更新:

我还将您在
STR\u中使用的格式字符串更改为\u DATE
from

%m/%d/%y %h:%i %p

因为您的输入字符串的年份为4位(
%Y
),而不是两位(
%Y
)。

MySQL
TIME()
函数提取时间戳的时间部分。因此,您的
INSERT
查询与执行此操作相同:

INSERT INTO schedule (pending_id, scheduled_time)
VALUES ("477", '12:33:00')
换句话说,您实际上并没有插入时间戳,而是插入了一个时间字符串片段。这将导致插入一个
NULL

相反,您应该在调用
STR\u TO\u DATE
后立即停止:

INSERT INTO schedule (pending_id, scheduled_time)
VALUES ("477", STR_TO_DATE("09/02/2016 12:33 PM", "%m/%d/%Y %h:%i %p"))
那会变成什么

INSERT INTO schedule (pending_id, scheduled_time)
VALUES ("477", '2016-09-02 12:33:00')
更新:

我还将您在
STR\u中使用的格式字符串更改为\u DATE
from

%m/%d/%y %h:%i %p


由于您的输入字符串的年份为4位(
%Y
),而不是两位(
%Y
)。

计划时间列的类型是什么?计划时间列的类型是什么?它是以0000-00-00-00:00:00插入的。我知道了,请查看Tim答案。您将在时间戳中插入时间,因此需要删除时间()function@ipeiro您发现
%y
问题仍然值得表扬。这也是错误的。我的scheduled_time列数据类型是timestamp,在删除time()方法后,该查询对meyah有效。谢谢,它作为0000-00-00:00:00插入。我知道了,请查看Tim答案。您将在时间戳中插入时间,因此需要删除时间()function@ipeiro您发现
%y
问题仍然值得表扬。这也是错误的。我的scheduled_time列数据类型是timestamp,在删除time()方法后,此查询对meyah有效。谢谢