MySQL日期之间工作不正常
我正在尝试获取所有在其他两个日期之间有日期的行。表中的日期字段仅为文本,格式为“dd/MM/yyyy” 我试过这个命令: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
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
之间并不总是有广泛的一致性。事实上,更好的是,在你这样做之前回答是愚蠢的!