gpt4 book ai didi

mysql 从数据库中选择日期,其中 t1.from 和 t1.to 之间的 NOW() 未定义 t1.to

转载 作者:行者123 更新时间:2023-11-30 00:27:28 25 4
gpt4 key购买 nike

我有一个表(t1):

id  |    from              |      to               |   item   |   price   |
1 2014-03-14 00:00:00 2014-03-26 00:00:00 25 75
2 2014-03-27 00:00:00 NULL 25 50
3 2014-03-27 00:00:00 2014-04-01 00:00:00 26 80
4 2014-04-02 00:00:00 NULL 26 100

现在,如果 item = 25,我想选择 t1.id = 2。在本例中,日期介于 2014-03-27 和 NULL 之间,因为不知道此价格何时结束。

如果是 item = 26,我希望在 4 月 1 日之前以及从 4 月 2 日开始获得 t1.id = 3 t1.id = 4.

我应该如何编写查询?

编辑:

查询思路:

SELECT `from`, IF(`to` IS NOT NULL, `to`, NOW()), price, item
FROM t1
WHERE NOW() BETWEEN `from`
AND IF(`to` IS NOT NULL,
`to`,
NOW()
)
ORDER BY item

今天(3 月 31 日)的预期结果:

id  |    from              |      to               |   item   |   price   |
2 2014-03-27 00:00:00 NULL 25 50
3 2014-03-27 00:00:00 2014-04-01 00:00:00 26 80

4 月 3 日的预期结果:

id  |    from              |      to               |   item   |   price   |
2 2014-03-27 00:00:00 NULL 25 50
4 2014-04-02 00:00:00 NULL 26 100

最佳答案

您可以仅在 select 语句中包含列 to 并避免使用 if 表达式。

SELECT 
id, `from`, `to`, price, item
FROM t1
WHERE NOW() BETWEEN
`from` AND IF(`to` IS NOT NULL, `to`, NOW() )
ORDER BY item;

对于任何 future 的目标日期记录,

set @future_date := now() + interval 3 day;

SELECT
id, `from`, `to`, price, item, @future_date
FROM t1
WHERE @future_date BETWEEN `from`
AND IF(`to` IS NOT NULL, `to`, @future_date )
ORDER BY item;

演示 @ SQL Fiddle

关于mysql 从数据库中选择日期,其中 t1.from 和 t1.to 之间的 NOW() 未定义 t1.to,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22758878/

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