MySQL STR“u TO”DATE似乎在day有一个“;0“;

MySQL STR“u TO”DATE似乎在day有一个“;0“;,mysql,sql,database,string,date,Mysql,Sql,Database,String,Date,我的数据库中有一系列字符串格式的日期 我正在尝试使用以下命令将这些转换为日期: SELECT STR_TO_DATE(Date_Scanned, '%d/%m/%Y')FROM urls WHERE Date_Scanned BETWEEN "01/02/2018" AND "05/04/2018" 我的问题似乎发生在日期包含0时,例如,下面的命令返回所有所需的日期: SELECT STR_TO_DATE(Date_Scanned, '%d/%m/%Y')FROM urls WHERE Da

我的数据库中有一系列字符串格式的日期

我正在尝试使用以下命令将这些转换为日期:

SELECT STR_TO_DATE(Date_Scanned, '%d/%m/%Y')FROM urls WHERE Date_Scanned 
BETWEEN "01/02/2018" AND "05/04/2018"
我的问题似乎发生在日期包含0时,例如,下面的命令返回所有所需的日期:

SELECT STR_TO_DATE(Date_Scanned, '%d/%m/%Y')FROM urls WHERE Date_Scanned 
BETWEEN "01/02/2018" AND "15/04/2018"
但是,此命令返回零结果:

SELECT STR_TO_DATE(Date_Scanned, '%d/%m/%Y')FROM urls WHERE Date_Scanned 
BETWEEN "01/02/2018" AND "05/04/2018"

我相信您的代码中没有错误,但它返回的是空行。原因是您传递的参数是作为字符串而不是日期计算的。您的
WHERE
子句过滤字符串中的
Date\u扫描列

如果要根据实际日期数据类型筛选列,应在
WHERE
子句中使用
STR_to_date()
,而不是在
SELECT
子句中使用

SELECT STR_TO_DATE(Date_Scanned, '%d/%m/%Y')
FROM urls 
WHERE STR_TO_DATE(Date_Scanned, '%d/%m/%Y') BETWEEN '2018-02-01' AND '2018-04-05'
但是,根据您的评论,您希望坚持所需的格式,因此必须强制转换列和值。但为什么要把它弄得更复杂呢


选择STR_TO_DATE(“2018年4月5日,'%d/%m/%Y')可以正常工作,那么扫描的日期是什么样的呢。您的意思是说您的日期类似于“00/02/2018”?扫描的日期也将时间附加到字符串中,例如:19/02/2018 11:38:32如果我使用您在中间('2018-02-01')中提供的日期格式,则此项功能不起作用。但是,它不适用于我所需的日期格式(“2018年3月2日”),然后将列和值强制转换为日期。我仅通过更改代码中其他地方的拆分函数就解决了这个问题!非常感谢你的帮助!
WHERE STR_TO_DATE(Date_Scanned, '%d/%m/%Y') 
      BETWEEN STR_TO_DATE('01/02/2018', '%d/%m/%Y') 
              AND STR_TO_DATE('05/04/2018', '%d/%m/%Y')