DELPHI 中日期时间运算问题! 高分.

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了DELPHI 中日期时间运算问题! 高分.相关的知识,希望对你有一定的参考价值。

如 2008/6/12 9:50:25 2008/6/13 10:50:00 在DELPHI中如何计算中间有多数小时 .
HoursBetween 算不准!

那你用MinutesBetween好了,自己再除个60,够准了吧。
再不准就用SecondsBetween求之间有多少秒,再自己换算下,不就OK了,就是个最小精度的问题
参考技术A 使用HoursBetween函数,在DateUtils单元中。
具体看delphi帮助

如何在日期中使用大于运算符?

【中文标题】如何在日期中使用大于运算符?【英文标题】:How to use greater than operator with date? 【发布时间】:2012-11-07 01:15:42 【问题描述】:

不知道这里发生了什么。这是来自 phpMyAdmin 的查询:

SELECT * FROM `la_schedule` WHERE 'start_date' >'2012-11-18';

但我始终返回表中的所有记录,包括开始日期为 2012-11-01 的记录。什么给了?

【问题讨论】:

您的 start_date 列的类型是日期还是时间戳? 【参考方案1】:

你已经用单引号将start_date 封装成字符串,请改用backtick

SELECT * FROM `la_schedule` WHERE `start_date` > '2012-11-18';
SQLFiddle Demo

【讨论】:

如果它的时间戳会发生什么? 值得注意的是,MySQL 似乎对日期格式有点挑剔;虽然 2019/02/08 21:04:07 或 2019-02-08 21:04:07 会产生预期结果,但使用美国日期格式的 02-08-2019 21:04:07 会产生更广泛的网络.【参考方案2】:

在您的声明中,您将一个名为 start_date 的字符串与时间进行比较。 如果 start_date 是一列,则它应该是

SELECT * FROM `la_schedule` WHERE start_date >'2012-11-18';

(无撇号) 或

SELECT * FROM `la_schedule` WHERE `start_date` >'2012-11-18';

(带反引号)。 希望这会有所帮助。

【讨论】:

【参考方案3】:

试试这个。

SELECT * FROM la_schedule WHERE `start_date` > '2012-11-18';

【讨论】:

【参考方案4】:

添加这个,因为没有提到这个。

SELECT * FROM `la_schedule` WHERE date(start_date) > date('2012-11-18');

因为那才是真正适合我的。在两个比较值上添加 date() 函数。

【讨论】:

【参考方案5】:

在我的情况下,我的专栏是一个日期时间,它不断给我所有记录。我所做的是包含时间,请参见下面的示例

SELECT * FROM my_table where start_date > '2011-01-01 01:01:01';

【讨论】:

【参考方案6】:

在解决方案下方的研究发现后,我已经尝试但以上不起作用。

SELECT * FROM my_table where DATE(start_date) > '2011-01-01';

Ref

【讨论】:

【参考方案7】:

如果您正在比较时间戳 - 您可以尝试关注

select * from table where columnInTimestamp > ((UNIX_TIMESTAMP() * 1000) - (1*24*60*60*1000))

这里 UNIX_TIMESTAMP() 给出当前时间戳,其中 "12460601000" 是 1 天的时间戳 -- 这样您就可以找到刚刚创建的数据1 天或 2 天等。

【讨论】:

以上是关于DELPHI 中日期时间运算问题! 高分.的主要内容,如果未能解决你的问题,请参考以下文章

delphi程序里日期时间怎么控制

关于在delphi中时间日期的转换问题,高手进

sql语句 时间段查询 高分

Delphi日期时间 UNIX [转]

delphi日期时间比较大小

delphi中如何计算当前日期与一个固定日期间的天数