【发布时间】:2013-02-19 10:21:14
【问题描述】:
日期计算不是我的强项,我需要一点帮助。 我正在尝试检查所选字段中的日期(即时间戳)是否在当天中午 12 点之前。提前致谢。
场景:如果在当天中午 12 点之前下订单,则该订单符合 x,否则为 y。因此,我在 select 语句中得到了该订单的创建日期(包括时间)。
【问题讨论】:
标签: firebird
日期计算不是我的强项,我需要一点帮助。 我正在尝试检查所选字段中的日期(即时间戳)是否在当天中午 12 点之前。提前致谢。
场景:如果在当天中午 12 点之前下订单,则该订单符合 x,否则为 y。因此,我在 select 语句中得到了该订单的创建日期(包括时间)。
【问题讨论】:
标签: firebird
DATE 类型不携带时间信息,因此由您来定义日期的时间点。如果时间信息也很重要,您应该使用TIMESTAMP 类型。
无论如何,假设该字段将日期存储在 12pm 时间,然后您使用
WHERE date_field <= CURRENT_DATE;
CURRENT_DATE 是所谓的上下文变量,显然它返回当前日期。 CURRENT_TIMESTAMP 和 CURRENT_TIME 也可用。您可以使用DATEADD 和DATEDIFF 内置函数进行一些日期计算。
所以如果该字段实际上是时间戳,你可以这样做
WHERE date_field < DateAdd(12 HOUR to cast(CURRENT_DATE as timestamp));
【讨论】:
DATE 没有时间部分,因此无法检查它是在“下午 12 点”之前还是之后,您需要使用 TIMESTAMP。跨度>
DATE 字段是不可能的,除非您有时间将订单存储到其他字段中。顺便说一句,使用am/pm 令人困惑(至少对我而言),我建议使用 24 小时制来明确您的问题。我认为您需要在当天中午之前下订单吗?