我想从当前日期比较数据库的日期,但不能。尝试过DATE_FORMAT
,FROM_UNIXTIME
,DATE
,STR_TO_DATE
,但是没有任何效果。他们仅返回NULL。
“ 2019年6月12日下午3:24”中的DateAndTime
列,此格式和类型为VARCHAR
。
SELECT User,
DATE_FORMAT(DateAndTime,'%d-%m-%Y') AS AddDate
FROM CallList
最佳答案
您在寻找str_to_date()
吗?
str_to_date(DateAndTime, '%M %d, %Y at %I:%i%p')
重要说明:切勿将日期存储为字符串。这在很多方面都是有害的:它效率低下,并且会给您所有的查询(您开始看到)增加无用的复杂性。我强烈建议您修复数据模型以将日期存储在相关的
date
数据类型中。这是迁移过程的骨架:
-- create a new column and populate it
alter table CallList add DateAndTime2 datetime;
update CallList set DateAndTime2 = str_to_date(DateAndTime, '%M %d, %Y at %I:%i%p');
-- drop the old column and rename the new colum
alter table CallList drop column DateAndTime;
alter table CallList change DateAndTime2 DateAndTime datetime;