Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/67.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 strottime将false保存为MySQL负int_Php_Mysql_Int_Strtotime - Fatal编程技术网

PHP strottime将false保存为MySQL负int

PHP strottime将false保存为MySQL负int,php,mysql,int,strtotime,Php,Mysql,Int,Strtotime,我正在进行迁移,日期以“0000-00-00 00:00:00”的形式出现,运行strotime()并返回false,在新表的列中保存为-2147483648,该列是INT数据类型。无论我将默认值设置为0还是NULL,它都会保存为负数。我希望避免为每个日期字段编写异常代码(并且我没有更改数据类型的选项),那么在PHP(使用一行)或MySQL中是否有一些简单的方法可以将默认值设置为“空”呢日期?时间0000-00-00不在1901-12-13到2038-01-19的时间范围内。它将返回损坏数据的下

我正在进行迁移,日期以“0000-00-00 00:00:00”的形式出现,运行strotime()并返回false,在新表的列中保存为-2147483648,该列是INT数据类型。无论我将默认值设置为0还是NULL,它都会保存为负数。我希望避免为每个日期字段编写异常代码(并且我没有更改数据类型的选项),那么在PHP(使用一行)或MySQL中是否有一些简单的方法可以将默认值设置为“空”呢日期?

时间
0000-00-00
不在1901-12-13到2038-01-19的时间范围内。它将返回损坏数据的下限。这对于几乎所有基于UNIX的
time\t
函数来说都很常见


我的建议是在处理之前将这些日期替换为
NULL
。它们无效。

没有代码,很难回答,但是您可以考虑使用.< /p>。 例:

或者类似的

三元运算符的工作方式如下(从上面的链接复制):


祝您好运,玩得开心

您是否正在查找列上的默认值,而只是不向其传递日期(即,如果未提供值,则只是将所有日期设置为某个值?)

如果是这样的话,如果您希望默认值为0(我不确定您是否会这样做,如果日期是无意义的,则最好允许null):


然后确保在使用失败的
strotime
结果进行调用时,不会向数据库传递任何信息(或者null应该可以)(注意
strotime
不会返回1901年12月13日星期五20:45:54 UTC之前日期的有效结果,因此0000-00-00将正确失败)。

让我编辑您的问题我发现strotime()实际上,在这些日期上返回了一个负数(即使在调试期间没有回声),所以我现在将它们设置为0。
$variable_to_write_to_db = ($field == 0 || $field == NULL ? writeDefaultsToDB() : writeToDB($field))
/* most basic usage */
$var = 5;
$var_is_greater_than_two = ($var > 2 ? true : false); // returns true
ALTER TABLE YourTable MODIFY YourColumn Default '0';