dotnetcore / FreeSql

🦄 .NET aot orm, C# orm, VB.NET orm, Mysql orm, Postgresql orm, SqlServer orm, Oracle orm, Sqlite orm, Firebird orm, 达梦 orm, 人大金仓 orm, 神通 orm, 翰高 orm, 南大通用 orm, 虚谷 orm, 国产 orm, Clickhouse orm, QuestDB orm, MsAccess orm.
http://freesql.net
MIT License
3.99k stars 842 forks source link

mysql 的timespan 類型,表結構是生成time類型,但是執行select時,生成的sql好像有問題 #1794

Closed yundexiaobin closed 3 weeks ago

yundexiaobin commented 3 weeks ago

问题描述及重现代码:

mysql 的timespan 類型,表結構是生成time類型,但是執行select時,生成的sql好像有問題。 如題,但是生成的sql有問題

// c# code
//生成的sql
 SELECT a.`id`, a.`booking_date`, a.`booking_schedule_id`, a.`time_from`, a.`sku`, a.`booking_application_id`
FROM `booking_lock_logs` a
WHERE (a.`booking_schedule_id` = '662b9d91-90fd-2201-0040-3a4309e393d9' AND a.`time_from` = 32400000000)
limit 0,1;
//正確的sql應該是?
 SELECT a.`id`, a.`booking_date`, a.`booking_schedule_id`, a.`time_from`, a.`sku`, a.`booking_application_id`
FROM `booking_lock_logs` a
WHERE (a.`booking_schedule_id` = '662b9d91-90fd-2201-0040-3a4309e393d9' AND a.`time_from` = '09:00:00')
limit 0,1

image

数据库版本

mysql 8.0.27

安装的Nuget包

3.2.820

.net framework/. net core? 及具体版本

net8

2881099 commented 3 weeks ago

TimeSpan 类型确实会被解析成 long,原因是为了实现所有 DateTime 方法,建议上述问题才用自定义函数解析临时解决。

yundexiaobin commented 3 weeks ago

TimeSpan 类型确实会被解析成 long,原因是为了实现所有 DateTime 方法,建议上述问题才用自定义函数解析临时解决。

== 操作符可以自定義解析嗎?看示例好像是只能自定義函數解析

2881099 commented 3 weeks ago

==解析要看 Aop.ParseExpression ,难度高一点,且有可能影响其他