Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/72.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何将sql数据库的dateandtime字段与当前日期(其中dateandtime为2019年6月6日上午11:19)进行比较此格式在MYSQL中_Mysql_Sql_Date_Mysql Workbench - Fatal编程技术网

如何将sql数据库的dateandtime字段与当前日期(其中dateandtime为2019年6月6日上午11:19)进行比较此格式在MYSQL中

如何将sql数据库的dateandtime字段与当前日期(其中dateandtime为2019年6月6日上午11:19)进行比较此格式在MYSQL中,mysql,sql,date,mysql-workbench,Mysql,Sql,Date,Mysql Workbench,我想将数据库的日期与当前日期进行比较,但无法进行比较。已经尝试了DATE\u格式,从UNIXTIME,日期,STR\u到日期,但没有任何效果。它们只返回NULL DateAndTime列中的“2019年6月12日03:24PM”此格式和类型为VARCHAR SELECT User, DATE_FORMAT(DateAndTime,'%d-%m-%Y') AS AddDate FROM CallList 您可以使用以下命令获取值: 因此,以下查询应该可以工作: SELECT `User`

我想将数据库的日期与当前日期进行比较,但无法进行比较。已经尝试了
DATE\u格式
从UNIXTIME
日期
STR\u到日期
,但没有任何效果。它们只返回NULL

DateAndTime
列中的“2019年6月12日03:24PM”此格式和类型为
VARCHAR

SELECT User, 
  DATE_FORMAT(DateAndTime,'%d-%m-%Y') AS AddDate
FROM CallList

您可以使用以下命令获取值:

因此,以下查询应该可以工作:

SELECT `User`,
  STR_TO_DATE(`DateAndTime`, '%M %d, %Y at %h:%i%p') AS `AddDate`
FROM `CallList`

我建议将
DateAndTime
列替换为real
DATETIME
列,而不是将DATETIME值存储为字符串。

是否正在查找
str\u to\u date()

重要提示:切勿将日期存储为字符串。这在很多方面都是有害的:它效率低下,并且会给所有查询(您正开始看到)增加无用的复杂性。我强烈建议您修复数据模型,将日期存储在相关的
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;

您的列的数据类型是什么?它的varchar@JensWhy您将此列声明为
varchar
?此列的类型应为
DATETIME
,并且在原始位置,您可以从该字符串创建一个
DATETIME
,然后插入到数据库中。将日期存储为varchat不是一个好主意。使用日期类型我们不能在varchar中使用,因为之前其他人正在处理此类型,我无法更改类型。
str_to_date(DateAndTime, '%M %d, %Y at %I:%i%p')
-- 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;