我正在开发一个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)
而且我不喜欢黑客或其对性能的潜在影响.
只需使用该DATE()功能.
SELECT * FROM event_list WHERE DATE(startAt) = '2009-04-20'
Run Code Online (Sandbox Code Playgroud)
SELECT*FROM event_list WHERE startAt> ='2009-04-20'AND startAt <'2009-04-21'
这将有效地使用startAt上的索引并正确处理边界条件.(包含函数的任何WHERE子句都不能使用索引 - 它无法知道表达式结果与列值具有相同的顺序.
使用两列有点像实数的整数和小数部分的列.如果您不需要时间,请不要将其保存在首位.
| 归档时间: |
|
| 查看次数: |
227 次 |
| 最近记录: |