nakagami / firebirdsql

Firebird RDBMS sql driver for Go (golang)
MIT License
227 stars 60 forks source link

Error Select #50

Closed l0mkaa closed 6 years ago

l0mkaa commented 6 years ago

I get an error "conversion error from string "%s" with some SELECT queries.

query = `select
    ffc.id,
    ffc.AcceptDate,
    ffc.DocumentDate,
    ffc.Credit Summa,
    ffc.Note,
    s_psl.ANumber SourceBudgetPromiseNum,
    s_psl.Summa SourceBudgetPromiseSumma,
    s_a.DocNumber SourceBudgetPromiseAgrNumber,
    s_a.ReestrNumber SourceBudgetPromiseAgrReestrNum,
    s_a.AgreementDate SourceBudgetPromiseAgrDate,
    s_a.Summa SourceBudgetPromiseAgrSumma

  from
    FacialFinCaption          ffc
    inner join FacialFinDetail  ffd on (ffd.RecordIndex = ffc.ID)
     left join PaymentSchedule s_psl on
    (
      (ffd.SourceBudgetPromise = s_psl.InnerPromiseNum)
      and
      (ffd.SourcePromise = s_psl.ANumber)
    )    
     left join Agreements s_a on (s_psl.AgreementRef = s_a.ID)
  where
    (
        (ffc.ProgIndex = 63) AND (ffc.acceptdate is not null) AND (s_psl.anumber is not null)  AND (s_a.ProgIndex = 314)  AND
        (ffc.acceptdate <= '%s'  AND ffc.acceptdate >= '%s')
    );`
rows, err := fireConn.Query(query, today, fromDay)
    if err != nil {
        return nil, err
    }
defer rows.Close()
os := make([]*O, 0)
for rows.Next() {
//...
}
if err = rows.Err(); err != nil {
        //this error!!!!
    return(nil, err)
}

What could be the problem? Thank you in advance!!!

ghost commented 6 years ago

Are vars today and fromDay strings? BTW, why don't u use '?' instead of '%s"??? Like this: (ffc.acceptdate <= ? AND ffc.acceptdate >= ?).

I don't know if ur issue is related to this, though. But if in ur database u r using just "date", u need to store it in a string instead of a time.Time type. The same goes for insert... Need to insert a "string" with just the date. But, if u r using a timestamp, than u can just use time.Time.

l0mkaa commented 6 years ago

You were right. Thank you!