MySQL日期之间工作不正常

MySQL日期之间工作不正常,mysql,date,datetime,Mysql,Date,Datetime,我正在尝试获取所有在其他两个日期之间有日期的行。表中的日期字段仅为文本,格式为“dd/MM/yyyy” 我试过这个命令: WHERE DATE(FROM_UNIXTIME(Datum)) BETWEEN DATE(FROM_UNIXTIME(@ParStart)) AND DATE(FROM_UNIXTIME(@ParStop)) @ParStart=“06/12/2016” @ParStop=“05/01/2017” 它不只是返回这些日期之间的数据,而是返回所有数据 我已尝试在带有STR_T

我正在尝试获取所有在其他两个日期之间有日期的行。表中的日期字段仅为文本,格式为“dd/MM/yyyy”

我试过这个命令:

WHERE DATE(FROM_UNIXTIME(Datum)) BETWEEN DATE(FROM_UNIXTIME(@ParStart)) AND DATE(FROM_UNIXTIME(@ParStop))
@ParStart=“06/12/2016” @ParStop=“05/01/2017”

它不只是返回这些日期之间的数据,而是返回所有数据

我已尝试在带有STR_TO_DATE的表上使用select,但尝试此操作时返回null:

str_to_date(`Datum`, '%d-%m-%Y')
我还尝试将列类型更改为date或datetime,但这会删除其中的日期并将其替换为0

有人能帮我吗


感谢

,来自_UNIXTIME
对数字(自1970年1月1日00:00起的秒数)有效,而不是对字符串有效。当您在字符串上使用它时,它为每个字符串返回相同的值(01.01.1970 00:00),因此您的查询
WHERE
子句始终为true

您应该使用
STR\u TO\u DATE(STR,format)
进行此类比较

WHERE STR_TO_DATE(Datum, "%d/%m/%Y") BETWEEN STR_TO_DATE(@ParStart, "%d/%m/%Y") AND STR_TO_DATE(@ParStop, "%d/%m/%Y")

您确实应该考虑不要在字符串中存储日期。 如果您有带ISO-8601

YYYY-MM-DD
格式日期的本机
DATE
DATETIME
字段,效果会更好。使用其他格式只会让人头疼,因为它们无法正确排序,因此无法编制索引,而且
MM/DD/yyyyy
DD/MM/yyyyy
之间并不总是有广泛的一致性。事实上,更好的是,在你这样做之前回答是愚蠢的!