将 DateTime 字段更新为 NULL

3

我通过ODBC连接使用PHP和SQL更新一个DateTime字段,其中包含一个日期,并将其设置为NULL。我知道该字段可以为空。我尝试过使用引号和不使用引号将其设置为NULL,但仍然没有成功。我知道SQL语句可行,因为如果我输入日期而不是NULL,则可以正常工作。任何帮助都会是惊人的。

$dateapproved = "NULL";
$updatedateapprovedsql = "UPDATE [Problem Data Table] SET [Corrective action approved]='$dateapproved' WHERE [8D Number]='$pionumber'";
$updatedateapprovedresult=odbc_exec($connection,$updatedateapprovedsql); 

你对字段可以为“NULL”了解多少?你应该能够像这样插入/更新空值而不会出现问题:SET date = NULL - Horen
2个回答

4

移除空值周围的撇号:

$updatedateapprovedsql = "UPDATE [Problem Data Table] SET [Corrective action approved] = null WHERE [8D Number]='$pionumber'";

谢谢。那是问题的一部分,它似乎出现在我正在使用 date_create 的代码中,因此当它返回一个NULL字段时,实际上我得到了一个日期,这让我感到困惑。 - rmaspero
在CodeIgniter中,似乎可以接受$updateData['expires_on'] = null而不会抛出错误,并且它的工作效果很好。但是,如果您使用$updateData['expires_on'] ='null',则最终会得到一个日期为'0000-00-00 00:00:00'而不是Null..!!希望这对使用CI的人有用。 - Clain Dsilva
@ClainDsilva:这不是Codeigniter的问题,而是数据库的问题。我猜你正在使用MySQL作为数据库,它会用零日期替换任何无效的日期。例如,SQL Server会抛出一个错误。 - Guffa
@Guffa 我的观点是关于在CI中使用null作为非字符串参数而不会导致错误。后者在全球范围内已知,即任何无效日期都将被mysql视为0000-00-00 00:00:00。 - Clain Dsilva

0
$dateapproved = "0000-00-00 00:00:00";

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接