2013-02-19 53 views
-1

日期计算不是我的强项,我需要一点帮助。 我试图检查从选定字段的日期(这是一个时间戳)是在当天下午12点之前。提前致谢。情景:如果订单在当天的下午12点之前发出,它将有资格获得x,否则获得y。所以我的创建日期(包括时间)是我在select语句中得到的。火鸟检查日期是否在当天的下午12点前

回答

1

DATE类型不包含时间信息,因此您需要定义日期在什么时间点。如果时间信息也很重要,则应使用TIMESTAMP类型。 总之,可以说,该字段存储在中午12点时的日期,然后你用

WHERE date_field <= CURRENT_DATE; 

CURRENT_DATE就是所谓的上下文变量返回,显然,当前的日期。 CURRENT_TIMESTAMPCURRENT_TIME也可用。您可以使用DATEADDDATEDIFF内置函数来进行一些日期计算。

因此,如果字段实际上是时间戳,你可以做这样

WHERE date_field < DateAdd(12 HOUR to cast(CURRENT_DATE as timestamp)); 
+0

AlN,感谢您的答复。我了解您对时间戳的建议,但是如果在CURRENT_DATE/NOW的下午12点之前,必须检查选择中的我的日期字段。我将编辑我的问题以解释场景...... – ceebreenk 2013-02-19 11:07:17

+0

@ user2086463由于Firebird中的DATE没有时间部分,因此无法检查它是在'12pm'之前还是之后,您需要使用'TIMESTAMP'。 – 2013-02-19 11:50:03

+0

正如马克已经写道,只有'DATE'字段是不可能的,除非您有时间将订单存储到其他字段中。顺便说一句,使用'am/pm'是令人困惑的(至少对我来说),我建议使用24小时制来清晰地表达你的问题。我认为你需要在当天中午之前下单吗? – ain 2013-02-19 12:34:58

相关问题