gpt4 book ai didi

php - 协助 MySQL 查询和时间戳

转载 作者:搜寻专家 更新时间:2023-10-30 22:17:41 24 4
gpt4 key购买 nike

我正在尝试创建一个查询,该查询返回属于 club_id 且在 start_date 和 end_date 内的所有行的报价,但是该查询还应返回与 club_id 匹配并且 end_date 为 0 的任何结果 - 任何想法如何做到这一点?我当前的查询如下...

SELECT 
* ,
UNIX_TIMESTAMP( start_date ) AS start_dateStamp,
UNIX_TIMESTAMP( end_date ) AS end_dateStamp
FROM
(`offers`)
WHERE
UNIX_TIMESTAMP( `start_date` ) <1329308797
AND
UNIX_TIMESTAMP( `end_date` ) >1329308797
AND
`club_id` =23

最佳答案

SELECT
`offers`.* ,
UNIX_TIMESTAMP( start_date ) AS start_dateStamp,
UNIX_TIMESTAMP( end_date ) AS end_dateStamp
FROM `offers`
WHERE `club_id` =23
AND (
(
`start_date`<FROM_UNIXTIME(1329308797)
AND `end_date`>FROM_UNIXTIME(1329308797)
)
OR `end_date`=FROM_UNIXTIME(0)
)

请注意,我将从 unix-timestamp 到 MySQL-date 的转换从字段移动到常量 - 这样它只需转换一次,而不是对所有行。此外,这种方式还可以使用索引。

编辑

“date zero”不是 Unix-Zero 而是 MySQL-Zeor 最后一行应该是

OR `end_date`='0000-00-00'

此外,如果 start_date 的数据类型和 end_date不是 DATETIME但是DATE你需要

DATE(FROM_UNIXTIME(...))

代替

FROM_UNIXTIME(...)

关于php - 协助 MySQL 查询和时间戳,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9293438/

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