我想从当前日期比较数据库的日期,但不能。尝试过DATE_FORMATFROM_UNIXTIMEDATESTR_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;

10-08 13:38