我正在开发日历应用程序。它存储两种格式的时间。该表格具有以下列title, startDate, startTime
。如果用户提供开始时间加上开始日期。数据库在startTime
列中存储UNIX时间戳(自UNIX epok以来的秒数),而startDate是NULL
。如果用户仅提供开始日期,则数据库以nnnn-mm-dd
的格式在'startTime`中以startDate
和NULL
存储日期。我有这个数据库结构,因为在世界各地显示时间更容易,因为不同的时区有不同的夏令时。SQL语句中的Where语句中的IF语句
我想选择指定日期之后发生的事件。客户端计算机为服务器提供当天开始的UNIX时间戳($unix
)和格式为nnnn-mm-dd
的日期($date
)以选择正确的日期。
问题是,我不知道如何选择那些如上所述发生的日子。这种解决方案并不适用于我,即使它的工作原理:
SELECT *
FROM events
WHERE startDate >= '$date'
OR startTime >= '$unix'
的事情是我有一些行,其中UNIX时间戳在startTime
提供,我也有startDate
提供的日期和其他原因,我我不想解释。正因为如此,我无法使用上面的解决方案。
我需要某种形式的解决方案,它有一个IF语句中Where子句,如:
SELECT *
FROM events
WHERE IF(startTime = NULL, startDate >= '$date', startTime >= '$unix')
我只是猜测这个解决方案。但是,对吗?
为什么两个'NULL NULL'? – einstein 2011-05-13 04:32:25
@ Woho87:你永远不会有足够的NULL! ;) – 2011-05-13 04:35:21
@ Woho87:没有两个空值。在第一次修订中,但我在10秒后修复了错字。 – zerkms 2011-05-13 04:35:54