Oracle sql:不是一个有效的月份



这就是我所做的,我正在向参数添加日期,并且我想获得该月的第一天在两个日期之间的所有记录。但是当我这样做时,我得到一个错误:"不是一个有效的月份"。这就是to_date(to_char(trunc(to_date(s.r startdatum),'MM'),'DD-MM-YYYY'))的问题。我想要那个日期当月的第一天

Dim stagiairs As DataTable = udao.getToekomstigeEnHuidigeStagiairs(New Date(2014, 05, 01))
       Public Function getToekomstigeEnHuidigeStagiairs(udate As Date) As DataTable
        Dim paramlist As New List(Of OracleParameter)
        Dim maand As OracleParameter = New OracleParameter()
        maand.Direction = ParameterDirection.InputOutput
        maand.OracleDbType = OracleDbType.Date
        maand.ParameterName = "datum"
        maand.Value = udate
        paramlist.Add(maand)
        strSQL = "SELECT s.stageid, (p.naam || ' ' || p.voornaam) as naam,(beg.naam || ' ' || beg.voornaam) as begeleider,s.STARTDATUM, s.einddatum FROM TAB_STGSP_GEBRUIKER p join TAB_STGSP_STAGE s on (p.id = s.stagiairid) join TAB_STGSP_Gebruiker beg on (beg.id = s.begeleiderid) where p.goedgekeurd = 1 and **to_char(to_date(:datum,'DD/MM/YYYY'), 'MM-DD-YYYY')** between to_date(to_char(trunc(s.startdatum,'MM'),'DD-MM-YYYY')) and s.EINDDATUM"
        Return util.selecteer(strSQL, paramlist)
    End Function

我想用这个查询检查参数中日期的第一天是否在开始日期和结束日期的第一天之间

不知道你想在这里做什么:

to_date(to_char(trunc(s.startdatum,'MM'),'DD-MM-YYYY'))

如果s.p startdatum是一个日期列,而你只想使用月份的值,你可以使用:

trunc(s.startdatum, 'MM')

这将给你一个月的第一天。

编辑:出错的地方如下:

**to_char()** between to_date(

你正在比较字符串s和日期。确保第一个语句产生一个日期值,以便将其与日期值进行比较。

to_date(:datum,'DD/MM/YYYY') between to_date...

最新更新