SQL转换为数据字段以与当前日期进行比较

时间:2014-09-26 22:12:29

标签: sql firebird

我在Firebird DB中有一个字段,其中包含这样的日期

27.09.2014 

直到我用

将其与当前日期进行比较
substring(100+extract(day from current_date) from 2 for 2)
|| '.' ||
substring(100+extract(month from current_date) from 2 for 2)
|| '.' ||
extract(year from current_date)

= date_field_to_compare

但是现在我需要保留更长的日期,在这种情况下这是不可能的,因为它不处理原生日期而是数字。

所以我实际上需要做相反的事情来转换

27.09.2014 

进入SQL日期。

喜欢

SELECT date_field_to_compare FROM db WHERE
date_field_to_compare < CURRENT_DATE

但是如何将此DB Date字段转换为SQL可理解的日期?

1 个答案:

答案 0 :(得分:1)

您不应将日期存储在(VAR)CHAR字段中,并将其存储在DATE中。它将解决这些类型的问题,并使选择,排序等更容易。

据说Firebird支持来自字符串的多个日期转换,而dd.MM.yyyy就是其中之一:

SELECT CAST('27.09.2014' AS DATE) FROM RDB$DATABASE

或者:

SELECT date_field_to_compare 
FROM db 
WHERE CAST(date_field_to_compare AS DATE) < CURRENT_DATE

相关:https://stackoverflow.com/a/23857635/466862