MySQL日期之间没有正常工作

时间:2017-01-25 08:19:25

标签: 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_TO_DATE的表格上使用select,但在尝试此操作时返回null:

str_to_date(`Datum`, '%d-%m-%Y')

我还尝试将列类型更改为日期或日期时间,但会删除其中的日期并将其替换为0

任何人都可以帮我吗?

由于

1 个答案:

答案 0 :(得分:0)

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

您应该使用STR_TO_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")

你真的应该考虑不在字符串中存储日期。