Php 在两次之间选择数据(还有其他条件)

Php 在两次之间选择数据(还有其他条件),php,mysql,sql,database,Php,Mysql,Sql,Database,我已经试着从我的数据库中选择特定的数据大约一个小时了,没有任何乐趣,非常感谢任何想法 My MySQL数据库包括以下列: valid_time_start - time valid_time_end - time valid_expiry - date valid_mon - tinyint(4) valid_tue - tinyint(4) valid_wed - tinyint(4) valid_thu - tinyint(4) valid_fri - tinyint(4) valid

我已经试着从我的数据库中选择特定的数据大约一个小时了,没有任何乐趣,非常感谢任何想法


My MySQL数据库包括以下列:

valid_time_start - time
valid_time_end - time

valid_expiry - date

valid_mon - tinyint(4)
valid_tue - tinyint(4)
valid_wed - tinyint(4)
valid_thu - tinyint(4)
valid_fri - tinyint(4)
valid_sat - tinyint(4)
valid_sun - tinyint(4)
我想将当前时间/天与上面的列表进行比较,以便只选择现在可用的数据

i、 e.如果当前时间是4月2日星期二12:04,我希望它选择一个包含以下单元格的记录:

valid_time_start: 11:00
valid_time_end: 13:00

valid_expiry: 10th Apr

valid_mon: 0
valid_tue = 1
valid_wed = 0 etc.
…但如果不是说,有效的开始时间是12:30

我一直在尝试从我的表中选择
SELECT*,其中date介于date1和date2之间“
,但我不确定如何合并其他部分。也许最好只选择mysql查询中的所有内容,然后使用PHP进行筛选?

SELECT*
SELECT *
FROM atable
WHERE valid_expiry > CURDATE()
  AND valid_time_start >= CURTIME()
  AND valid_time_end < CURTIME()
  AND CASE DAYOFWEEK(CURDATE())
        WHEN 1 THEN valid_mon
        WHEN 2 THEN valid_mon
        WHEN 3 THEN valid_tue
        WHEN 4 THEN valid_wed
        WHEN 5 THEN valid_thu
        WHEN 6 THEN valid_fri
        WHEN 7 THEN valid_sat
      END = 1
来自atable 其中有效\u expiry>CURDATE() 和有效的\u时间\u开始>=CURTIME() 和有效时间 和案例DAYOFWEEK(CURDATE()) 当1时,则为有效的\u mon 当2时,则为有效的\u mon 当3时,则有效 当4时,则有效 当5时,则有效_thu 当6时,则有效_fri 当7时,则有效 结束=1
选择*
来自atable
其中有效\u expiry>CURDATE()
和有效的\u时间\u开始>=CURTIME()
和有效时间
和案例DAYOFWEEK(CURDATE())
当1时,则为有效的\u mon
当2时,则为有效的\u mon
当3时,则有效
当4时,则有效
当5时,则有效_thu
当6时,则有效_fri
当7时,则有效
结束=1

谢谢@andriy-m,我住在新西兰(UTC+12:00),有没有办法在查询中包括日期、默认时间、时区设置(“太平洋/奥克兰”)或类似的内容?@Jamie:对不起,我不太明白你的意思。
CURTIME()
根据返回以当前时区表示的时间。您的意思是
有效时间\u开始
有效时间\u结束
反映不同的时区,您需要一些转换时间的方法吗?谢谢@andriy-m,我在新西兰(UTC+12:00),有没有办法包括日期\u默认时区设置('pacific/auckland')或类似的查询?@Jamie:对不起,我不确定我是否理解你的意思。
CURTIME()
根据返回以当前时区表示的时间。您的意思是
有效时间\u开始
有效时间\u结束
反映不同的时区,您需要某种方式转换时间吗?