我有一个表,其列DateFrom(Varchar)使用格式YYYY-MM-DDTHH:MM:SS
要获取特定日期的时间,我使用以下sql:
SELECT SUBSTRING(DateFrom FROM 12 FOR 5) AS From FROM calendar WHERE SUBSTRING(DateFrom FROM 1 FOR 10) = "'.$date.'"
这给了我:
HH:MM
.$date
(来自datepicker)的格式
DD.MM.YYYY
我正在创建一个网站,应该让用户看到与日期相关联的时间
在检查字符串是否等于
.$date
之前,是否可以转换数据库中的字符串?或者将格式从datepicker改为
YYYY.MM.DD
更好吗? 最佳答案
把子串的东西去掉,改用这个怎么样?
SELECT TIME(DateFrom) AS `From`
FROM Calendar
WHERE DATE(DateFrom) = STR_TO_DATE($date,'%d.%m.%Y')
这将起作用,因为DateFrom字段恰好存储在DATETIME对象的标准字符串格式中。
From
是反勾号,因为它是保留字。您确实应该考虑将DATE的数据类型从列更改为DATE时间,然后对该列进行索引。那么你可以把WHERE子句改成
WHERE DateFrom >= STR_TO_DATE($date,'%d.%m.%Y')
AND DateFrom < STR_TO_DATE($date,'%d.%m.%Y') + INTERVAL 1 DAY
你将获得非常好的性能优势。
关于php - 选择一个子字符串(日期)并将其转换,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/23268160/