【发布时间】:2012-10-24 13:39:26
【问题描述】:
我正在使用 delphi 2010 和 Firebird(本地)进行测试,但最终将针对 MS Sql Server 或 Oracle 运行我的应用程序。
如果我有日期时间字段(开始时间和结束时间),并且我想选择过去 30 天的所有记录,或者一系列日期,我该怎么做,考虑到上面提到的三个数据库(火鸟, sql server, oracle)
示例日期时间字段如下所示:10/15/2012 9:20:49 AM
以下是一个示例 sql 语句,我想在其中添加一个额外的 where 子句:
SQL.Text:=
'SELECT J.id, MIN(p.start_Time) as startTime, MAX(p.end_Time) as endTime, '
+ 'SUM(p.duration) as TotalDuration '
+ 'FROM phases p '
+ 'JOIN jobs j ON j.id = p.jobs_Id '
+ 'WHERE j.id=:jobId '
+ 'GROUP BY j.id';
如何从开始时间或结束时间在过去 30 天内的阶段中选择所有记录?
如何从开始时间或结束时间在某个日期范围内的阶段中选择所有记录 (例如,我正在使用参数:beginDateRange & :endDateRange)
感谢您的帮助
【问题讨论】:
-
它不会像整数一样工作吗?
(column_date < :endDateRange) and (column_date >= :beginDateRange)?对于“last 30”,您只需设置 beginRange 并省略 endRange 的条件 -
对于“最后 30 个”,您也可以使用
datediff (day from current_date to cast(? as date))- 尽管它可能是 Firebird-only 构造:firebirdsql.org/refdocs/langrefupd21-intfunc-datediff.html
标签: sql delphi delphi-2010