繁体   English   中英

在ProductSell模型中,日期列类型为varchar,格式为d / m / Y,如何使用两者之间的数据来检索数据?

[英]In ProductSell model there is a date column type is varchar and format d/m/Y how can I retrieve data using wherebetween?

我有一个型号为ProductSell的列日期,其类型为varchar,格式为d / m / Y。

假设我有两个日期31/03/2019和01/04/2019。 我想在这些日期之间获取数据,例如

$productsale=ProductSell::whereBetween('date',[$request->from,$request- 
>to])->get();

当日期是31/03/2019和01/04/2019时不起作用,但是当日期是01/03/2019和31/03/2019时可以正常工作

有什么解决办法吗?

如果有可能,请将数据类型从varchar更改为日期,日期时间或时间戳。 这里的问题是数据库不了解如何按时间顺序排列日期列,因为它认为它正在处理标准文本,并且希望按字母顺序对它们进行排序。 使用datetime可以按日期对行进行排序,然后选择所需的子集。

幸运的是,您通常可以只更改列的数据类型,只要这些值采用标准格式(并且您的表不是数百万个记录),通常就可以很好地进行转换。 我假设您在这里使用mysql,但是大多数数据库应该具有类似的内容。

ALTER TABLE <tableName> MODIFY <columnName> datetime;

当然,为了安全起见,我建议您先复制表格并尝试进行转换。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM