Php 变量中的时间计算
我有以下疑问:Php 变量中的时间计算,php,mysql,variables,time,Php,Mysql,Variables,Time,我有以下疑问: INSERT INTO table (a, b, c) VALUES (NOW(), NOW() + INTERVAL 14 DAY,?) 对于a和b我使用的是时间戳,而b是时间戳a,加上14天 我遇到的问题是,我需要稍后在登录脚本上使用c,当c被降计数为零时,将发生进一步的查询 因此,我认为找到一个变量来精确计算a和b之间的差异是最好的方法 b - a = c 这样的变量将被插入到数据库中 我的问题是,我现在从值部分有2个时间戳,我不知道如何使用到这一点。我可以通过fetc
INSERT INTO table (a, b, c) VALUES (NOW(), NOW() + INTERVAL 14 DAY,?)
对于a
和b
我使用的是时间戳,而b
是时间戳a
,加上14天
我遇到的问题是,我需要稍后在登录脚本上使用c
,当c
被降计数为零时,将发生进一步的查询
因此,我认为找到一个变量来精确计算a
和b
之间的差异是最好的方法
b - a = c
这样的变量将被插入到数据库中
我的问题是,我现在从值部分有2个时间戳,我不知道如何使用到这一点。我可以通过fetch_assoc等来处理它们。但在此之前,我认为可能有一种更简单的方法来实现我的目标?如果你想让
c
成为一个整数,并且a
和b
之间的差,那么你可以使用unix\u时间戳(这是自1970-01-01以来经过的秒数)
要将此类整数值转换回时间戳,您可以使用来自\u UNIXTIME()的函数
您可以找到更多信息
表格
需要加引号,因为它是保留字。如果您只是更改了表名以简化查询,那么请至少保持语法有效。或者使用mytable
而不是table
。到目前为止,它是一个整数。这取决于什么是必要的。我可以把它改成文本,varchar…所以c在几秒钟内基本上是b-a?是的。如果c降到0,就会发生一些事情。我很难遵循你的逻辑。你能把这个问题改一下以便更容易理解吗?你好,这个不行。我试着使用这个,但查询不会发生。当我离开最后一部分时,它工作了。c的数据类型是20个字符的整数。奇怪的是,我已经将errorreport设置为e_all,但不会得到此查询的errormessage。所有其他的都在工作。只需在php中打印查询,并尝试在mysql中手动运行它。e_all指的是php调试,而不是mysql。我发现了错误。此查询存在逻辑问题。计算的时间错了。不是计算[now()]-[now()+14d],而是计算[now()+14d]-[now()]。这是理解整个系列的另一个问题。如果我现在使用,时间将以php时间给出,实际时间是多少。如果我使用unix\u时间戳,它将给出从unix\u时间开始的秒数。现在我有14000000的c。但在14天内,这在几秒钟内是不一样的。应该是60**60*24*14=1.209.600秒,还是我错了?@bonny很高兴它现在能工作了。只是一个提示,如果你能为我的回答投上更高的票,那也没什么坏处。谢谢:)
INSERT INTO table (a, b, c) VALUES (NOW(), NOW() + INTERVAL 14 DAY,unix_timestamp(now()) - unix_timestamp(now() + interval 14 day))