当天有“0”时,MySQL STR_TO_DATE似乎失败了

问题描述 投票:1回答:1

我的数据库中有一系列日期是String格式。

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

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"
mysql sql database string date
1个回答
3
投票

我相信你的代码中没有错误,而是返回空行。原因是因为您传递的参数被评估为字符串而不是日期。你的WHERE子句过滤字符串中的Date_Scanned列。

如果要根据实际日期数据类型过滤列,则应使用STR_TO_DATE()子句中的WHERE而不是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'

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')

但是,根据您的评论,您希望坚持所需的格式,因此您必须投射列以及值。但为什么要让它更复杂?

qazxswpoi
© www.soinside.com 2019 - 2024. All rights reserved.