te')); return $arr; } /* 遍历用户所有主题 * @param $uid 用户ID * @param int $page 页数 * @param int $pagesize 每页记录条数 * @param bool $desc 排序方式 TRUE降序 FALSE升序 * @param string $key 返回的数组用那一列的值作为 key * @param array $col 查询哪些列 */ function thread_tid_find_by_uid($uid, $page = 1, $pagesize = 1000, $desc = TRUE, $key = 'tid', $col = array()) { if (empty($uid)) return array(); $orderby = TRUE == $desc ? -1 : 1; $arr = thread_tid__find($cond = array('uid' => $uid), array('tid' => $orderby), $page, $pagesize, $key, $col); return $arr; } // 遍历栏目下tid 支持数组 $fid = array(1,2,3) function thread_tid_find_by_fid($fid, $page = 1, $pagesize = 1000, $desc = TRUE) { if (empty($fid)) return array(); $orderby = TRUE == $desc ? -1 : 1; $arr = thread_tid__find($cond = array('fid' => $fid), array('tid' => $orderby), $page, $pagesize, 'tid', array('tid', 'verify_date')); return $arr; } function thread_tid_delete($tid) { if (empty($tid)) return FALSE; $r = thread_tid__delete(array('tid' => $tid)); return $r; } function thread_tid_count() { $n = thread_tid__count(); return $n; } // 统计用户主题数 大数量下严谨使用非主键统计 function thread_uid_count($uid) { $n = thread_tid__count(array('uid' => $uid)); return $n; } // 统计栏目主题数 大数量下严谨使用非主键统计 function thread_fid_count($fid) { $n = thread_tid__count(array('fid' => $fid)); return $n; } ?>c# - .NET MAUI app treats values of SQLite DateTime columns as numbers when deployed on Windows - Stack Overflow
最新消息:雨落星辰是一个专注网站SEO优化、网站SEO诊断、搜索引擎研究、网络营销推广、网站策划运营及站长类的自媒体原创博客

c# - .NET MAUI app treats values of SQLite DateTime columns as numbers when deployed on Windows - Stack Overflow

programmeradmin3浏览0评论

this is the situation. I've an old Deplhi7 application, working on Firebird 3.8, that interacts with a much older Delphi5 application based on BDE (!!!). Our customer wants to upgrade this app, because BDE has become somewhat unstable on Windows10/11, no to mention the inability to translate regular SQL statement of medium complexity.

My colleague had already developed a Net MAUI app for our customers, and it has been adapted to this specific customer's requests (as mainly it does the same basic work - order collect). Net MAUI was chosen because of its multi-platform nature, but the majority of our customer's portfolio use iPads.

The problem arose when I had to interface with that database on Windows machines and, consequently, the app had to be deployed on the Windows x64 platform. While on iOS and Android the datetime columns appear correct (we both use SqliteExpert for checking the data), on the Windows deployment the columns created as DATETIME (I know Sqlite doesn't have a dedicated type for date/time values) are seen as 18 digits big integers.

My Delphi7 app (no plans to migrate it to a more modern platform) uses Zeos 8.0.0 library, and works fine with all sorts of queries involving datetime columns as long as I'm the one writing that data using Zeos DataSet.Fields[n].AsDatetime function (and the Net MAUI read them back correctly). But when the Net MAUI app writes some data into the Datetime-defined columns they become strange 18 digits big integer value. Sqlite Expert shows them as 18 digit values but it's not able to show the corresponding date value. This value can be converted in a classic Delphi DateTime value by subtracting to it the value 621355968000000000, dividing the result by 10000000 (the number of C# ticks per millisecond per the number of milliseconds in a second), and then converting it from Unix time.

The only workaround I've found so far is dealing with DateTime values converted through the DateTime-defined columns AsString property, but I believe it's not a great way to deal with these values, and more prone to errors compared to the AsDateTime approach. Has anyone using this combination of platforms encountered such an issue?

Thanks.

Rodolfo.

发布评论

评论列表(0)

  1. 暂无评论