我正在开发一个日历应用程序.它以两种格式存储时间.该表具有以下列标题,startDate,startTime.如果用户提供开始时间加上开始日期.数据库在startTime列中存储UNIX时间戳(自UNIX epok以来的秒数),而startDate为NULL.如果用户仅提供开始日期,则数据库将在startDate中以nnnn-mm-dd格式存储日期,在’startTime`中存储NULL.我有这种数据库结构,因为它更容易在世界各地显示时间,因为不同的时区有不同的夏令时.
我想选择在指定日期之后发生的事件.客户端计算机为服务器提供当天开始的UNIX时间戳($unix)和格式为nnnn-mm-dd的日期($date)以选择正确的日期.
问题是,我不知道如何选择上面指定的那些日子.此解决方案不适用于我,即使它有效:
SELECT *
FROM events
WHERE startDate >= '$date'
OR startTime >= '$unix'
事情是我在某些行中在startTime中提供了unix时间戳,我也有一个在startDate中提供的日期以及我不想解释的其他原因.因此,我不能使用上面的解决方案.
我需要某种在Where子句中包含IF语句的解决方案,如:
SELECT *
FROM events
WHERE IF(startTime = NULL, startDate >= '$date', startTime >= '$unix')
我只是猜测这个解决方案.但这是对的吗?