2017-02-07 107 views
0

在我的PostgreSQL的查询我收到此错误:PostgreSQL的日期格式无效错误

Error: SQL Error: SQLSTATE[22007]: Invalid datetime format: 7 ERROR: invalid input syntax for type date: "'" 

的log_field2字段是varchar数据类型而我却强制转换为日期(::日期),然后签入的值名为{START_DATE}和{END_DATE}的参数并将其放在单引号中,但无济于事。有人可以提供一些方向/帮助,以了解问题可能是什么?任何帮助表示赞赏。

这里是我的查询:

SELECT sle.source_id, 
count(sle.*), 
sum(coalesce(log_field20::numeric, 0)) || ' min' as duration_total 
FROM custom_field_log_entries sle 
INNER JOIN student_enrollment se 
ON (sle.source_id=se.student_id and se.custom_9 is null 
AND se.syear = {SYEAR} 
AND se.end_date is null) 
INNER JOIN schools sc on (se.school_id=sc.id) 
WHERE sle.field_id = 328 
**AND log_field2::date BETWEEN '{START_DATE}' AND '{END_DATE}'** 
AND (log_field20 ~ '^[0-9]+$' or log_field20 is null) --{SCHOOL_SPECIFIC} 
AND se.school_id = {SCHOOL_ID} 
GROUP BY sle.source_id 

回答

0

您必须更改{SYEAR}, '{START_DATE}', '{END_DATE}' 到某个值:

SELECT sle.source_id, 
     count(sle.*), 
     sum(coalesce(log_field20::numeric, 0)) || ' min' as duration_total 
FROM custom_field_log_entries sle 
INNER JOIN student_enrollment se 
     ON (sle.source_id=se.student_id and se.custom_9 is null 
      AND se.syear = 2017 
      AND se.end_date is null) 
INNER JOIN schools sc ON (se.school_id=sc.id) 
WHERE sle.field_id = 328 
    AND log_field2::date BETWEEN '2017-01-10' AND '2017-01-25' 
    AND (log_field20 ~ '^[0-9]+$' or log_field20 is null) --{SCHOOL_SPECIFIC} 
    AND se.school_id = 1 -- {SCHOOL_ID} 
GROUP BY sle.source_id 
+0

我的价值观传递从一个PHP页面。对不起,我应该澄清一点。 – Melinda