Sql Firebird 2.5倍于字符串的铸造日期

Sql Firebird 2.5倍于字符串的铸造日期,sql,firebird,firebird2.5,Sql,Firebird,Firebird2.5,我想选择与今天日期相同的所有记录 保存日期的实际字段具有以下格式 31.05.18-31.06.18 但也可以是这样 31.05.2018-31.06.2018 甚至可以保存其他数据或不保存任何数据 因此,我需要一种稳健的方法来选择“-”之后的日期,并将其与“现在”进行比较,如果没有“-02.06.2018”(今天),则不应选择该记录 我到目前为止: SELECT * FROM Table WHERE FELD1 IS NOT NULL AND NOT FELD1 = '' AN

我想选择与今天日期相同的所有记录

保存日期的实际字段具有以下格式

31.05.18-31.06.18
但也可以是这样

31.05.2018-31.06.2018
甚至可以保存其他数据或不保存任何数据

因此,我需要一种稳健的方法来选择“-”之后的日期,并将其与“现在”进行比较,如果没有“-02.06.2018”(今天),则不应选择该记录

我到目前为止:

SELECT
*
FROM
  Table
WHERE
  FELD1 IS NOT NULL AND
  NOT FELD1 = '' AND
  FELD1 LIKE '%-%' AND
  CAST(iif(Position('-' IN FELD1) IS NULL OR Position('-' IN FELD1) = 0, '',     Right(FELD1, Position('-' IN FELD1) - 1)) AS DATE),
  Position('-' IN FELD1) < 'NOW'
选择
*
从…起
桌子
哪里
FELD1不为NULL,并且
不是1='',而是
FELD1类似“%-%”和
铸造(iif(在FELD1中的位置('-'为空)或位置('-'在FELD1中)=0',右(FELD1,在FELD1中的位置('-'为1))为日期),
位置(“-”在字段1中)<“现在”

我进一步修改了我的示例。但这真的很可靠吗?改变你的数据模型。这一点都不可靠。唯一真正的解决方案是使用两个单独的日期列。此外,您确实不应该使用
'NOW'
,因为如果转换以字符串类型而不是日期或时间戳结束,则很容易得到错误的结果,请使用
当前日期
。就目前情况而言,你并不是在问问题,请澄清你真正在问什么。我不能改变数据,就像我得到了它一样。我的问题是如何分割字段的数据,这是检索字段第二个日期的最佳方法。