我在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可理解的日期?
答案 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