我试图获取所有具有两个其他日期之间日期的行。表格中的日期字段只是具有以下格式的文本" 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
任何人都可以帮我吗?
由于
答案 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")
你真的应该考虑不在字符串中存储日期。