gpt4 book ai didi

php - 在 IF 条件下选择 DATEDIFF 时出错

转载 作者:搜寻专家 更新时间:2023-10-31 22:04:43 25 4
gpt4 key购买 nike

在 MySQL 查询中,我尝试根据 IF() 条件选择 DATEDIFF()NOW() . MySQL 的行为在这里让我感到困惑。

这个在 phpMyAdmin 中运行的查询有一些奇怪的结果。这些值应该相同,但它们不是。

SELECT
TIMEDIFF(DATE_ADD(NOW(), INTERVAL 1 HOUR), NOW()) AS `A`,
IF(FALSE, NOW(), TIMEDIFF(DATE_ADD(NOW(), INTERVAL 1 HOUR), NOW())) AS `B`

A ----------------- | B -----------------
01:00:00 ---------- | 2001-00-00 00:00:00

如果我尝试这个查询,将 IF 条件的第一个选项中的 NOW() 更改为 NULL,它会显示正确的结果对于 TIMEDIFF。这是为什么?

SELECT
TIMEDIFF(DATE_ADD(NOW(), INTERVAL 1 HOUR), NOW()) AS `A`,
IF(FALSE, NULL, TIMEDIFF(DATE_ADD(NOW(), INTERVAL 1 HOUR), NOW())) AS `B`

A ----------------- | B -----------------
01:00:00 ---------- | 01:00:00

那么我的问题是:NOW()NULL 如何影响 IF 返回?

最佳答案

可能是 NOW() 或其他日期函数在所有情况下都必须返回一个值,因为我正在使用 RAND() 测试相同的查询SQRT() 函数,但在那种情况下它返回正确的值,所以问题可能出在 NOW() 函数返回值

尝试将 NOW() 与空白 CONCAT() 一起使用,它也不会操纵您的返回值,并且它与 TRUEFALSE

 SELECT
TIMEDIFF(DATE_ADD(NOW(), INTERVAL 1 HOUR), NOW()) AS `A`,
IF(TRUE, CONCAT(NOW()), TIMEDIFF(DATE_ADD(NOW(), INTERVAL 1 HOUR), NOW())) AS `B`

SELECT TIMEDIFF( DATE_ADD( NOW( ) , INTERVAL 1 HOUR ) , NOW( ) ) AS  `A` , 
CASE WHEN TRUE THEN TIMEDIFF( DATE_ADD( NOW( ) , INTERVAL 1 HOUR ) , NOW( ) )
ELSE CONCAT( NOW( ) )
END AS `B

都给出了正确的结果

关于php - 在 IF 条件下选择 DATEDIFF 时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21011812/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com