最好使用两列或DATETIME

ehd*_*hdv 0 mysql database

我正在开发一个MySQL数据库,它将创建一个"Today at"列表并将其发送给订阅者.我想知道在开始和结束字段上使用DATETIME数据类型是否更好,或者两个有两列,startDate和startTime(具有适当的数据类型).我的第一个想法是使用DATETIME,但这使得后续使用系统有点尴尬,因为你不能再写:

SELECT * FROM event_list WHERE startAt='2009-04-20';
Run Code Online (Sandbox Code Playgroud)

相反,我找到的最好的是:

SELECT * FROM event_list WHERE startAt LIKE '2009-04-20%';
Run Code Online (Sandbox Code Playgroud)

而且我不喜欢黑客或其对性能的潜在影响.

Sör*_*lau 6

只需使用该DATE()功能.

SELECT * FROM event_list WHERE DATE(startAt) = '2009-04-20'
Run Code Online (Sandbox Code Playgroud)

  • 在WHERE子句中使用函数可能会使优化器不会在startAt上使用任何索引. (2认同)

dkr*_*etz 6

SELECT*FROM event_list WHERE startAt> ='2009-04-20'AND startAt <'2009-04-21'

这将有效地使用startAt上的索引并正确处理边界条件.(包含函数的任何WHERE子句都不能使用索引 - 它无法知道表达式结果与列值具有相同的顺序.

使用两列有点像实数的整数和小数部分的列.如果您不需要时间,请不要将其保存在首位.