SQL查询不检索数据

时间:2018-04-10 14:10:23

标签: sql oracle

SELECT DISTINCT 
    TO_CHAR(CREATION_DATE,'MONTH') creation_month  
FROM 
    AP_INVOICES_ALL; 

此查询正确检索月份。但是,如果我在where子句中传递月份,它就不会检索数据。

SELECT DISTCINT
    TO_CHAR(CREATION_DATE, 'MONTH') CREATION_MONTH  
FROM
    AP_INVOICES_ALL
WHERE 
    TO_CHAR(CREATION_DATE, 'MONTH') = 'MARCH';

请协助。我需要在一个报告中将月份作为参数传递。

2 个答案:

答案 0 :(得分:3)

这是private void label_MouseDown() var watch = System.Diagnostics.Stopwatch.StartNew(); double elapsedMs = watch.ElapsedMilliseconds; if (elapsedMs > 2500) { ////codes here } 格式的已知问题。字符串用字符填充。

相反,请使用'MONTH'。看看这个:

'MON'

第一个select to_char(sysdate, 'MONTH'), (case when to_char(sysdate, 'MONTH')= 'APRIL' then 1 else 0 end), to_char(sysdate, 'MON'), (case when to_char(sysdate, 'MON')= 'APR' then 1 else 0 end) from dual; 表达式返回0 - 不匹配。第二个返回1,表示它们匹配。

答案 1 :(得分:0)

我认为仅仅过了一个月,没有一年,这不是一个好主意。而将日期视为日期,将日期与日期等进行比较会更好。我可以建议以下内容吗?

SELECT TO_CHAR(creation_date, 'MONTH') AS creation_month
  FROM ap_invoices_all
 WHERE TRUNC(creation_date, 'MONTH') = DATE'2018-03-01';

TRUNC()日期到月份将返回午夜的第一个月类型DATE的值。然后,您可以使用常规的Oracle DATE值或ANSI DATE文字进行比较。

希望这有帮助。