【发布时间】:2015-09-10 22:49:29
【问题描述】:
我正在尝试编写一条 SQLite 语句以从用户输入(来自 WPF 日期选择器)中获取最接近的日期时间。我有一个表 IRquote(rateId, quoteDateAndTime, quoteValue)。
例如,如果用户输入 10/01/2000 并且数据库只存储了 08/01/2000、07/01/2000 和 14/01/2000 的修复,它将返回 08/01/2000,是最接近 2000 年 10 月 1 日的日期。
当然,我希望它不仅适用于日期,还适用于时间。
我尝试使用此查询,但它返回日期最远的行,而不是最接近的行:
SELECT quoteValue FROM IRquote
WHERE rateId = '" + pRefIndexTicker + "'
ORDER BY abs(datetime(quoteDateAndTime) - datetime('" + DateTimeSQLite(pFixingDate) + "')) ASC
LIMIT 1;
请注意,我有一个函数 DateTimeSQLite 将用户输入转换为正确的格式。
我不明白为什么这不起作用。 我怎么能做到?感谢您的帮助
【问题讨论】:
-
你从哪里得到这个用户输入?数据存储在哪里?
-
我不确定执行此操作的所有 SQL 命令,但我怀疑必须有某种方法来区分输入与存储的值,从中得出一个数值,然后按此排序值(
ORDER BY),并获取第一条记录(TOP 1)。 (可以选择在排序前转换为绝对值,以防您想要任一方向的最近时间。) -
@BerndLinde 我编辑了我的问题以添加更多详细信息。大卫我会用你提出的方法再试一次。感谢您的帮助