0

我有一个要求,数据库中的一个字段就像

select distinct workorder_ref,workorder_tag from repository.tblworkorder a
where  REGEXP_LIKE (workorder_tag,'^20130912');

它给了我这样的输出,

workorder_ref   workorder_tag
AJYAMOI         20130912-050226
AJYAXDX         20130912-085750
AJYAXEC         20130912-085753
AJYBLGT         20130912-102759

但正如你们在查询中看到的那样,我在示例中对日期 yyyymmdd 格式 (20130912) 进行了硬编码。那么有什么办法可以解决吗?我在想像下面这样的事情,但它没有帮助。

select distinct workorder_ref from repository.tblworkorder a where REGEXP_LIKE
(workorder_tag,'((to_char(sysdate,'YYYYMMDD'))%)');
4

3 回答 3

3

尝试使用此条件:

where workorder_tag like to_char(sysdate, 'yyyymmdd') || '%'
于 2013-09-12T11:48:54.127 回答
1

您已将 to_char() 括在引号内'....',使其成为字符串:'((to_char(sysdate,'YYYYMMDD'))%)'。您需要正确放置引号。

此外,当使用 REGEXP_LIKE() 时,您必须使用.*而不是%,因为它执行正则表达式匹配而不是%LIKE 执行的简单模式匹配。

修正版:

select distinct workorder_ref from repository.tblworkorder a 
 where REGEXP_LIKE(workorder_tag, to_char(sysdate,'YYYYMMDD') || '.*');

但在您的简单情况下,您可以使用 LIKE:

select distinct workorder_ref from repository.tblworkorder a 
where workorder_tag LIKE to_char(sysdate,'YYYYMMDD')|| '%';
于 2013-09-12T12:31:31.837 回答
0

SQL Server中,我认为该功能GETDATE()应该可以解决您的问题。

或者MySQLNOW()中的函数

SYSDATE甲骨文

于 2013-09-12T11:33:41.670 回答