/ Forside / Teknologi / Udvikling / ASP / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
ASP
#NavnPoint
smorch 9259
Harlekin 1866
molokyle 1040
Steffanst.. 758
gandalf 657
smilly 564
gibson 560
cumano 530
MouseKeep.. 480
10  Random 410
DateSerial problem i SQL
Fra : Finn Elmgaard


Dato : 02-10-03 21:20

Hej gruppe
Jeg har - som mange før mig - problemer med at at udtrække poster før/efter
en given dato fra en SQL-server.
Datatypen i databasen er "smalldatetime" og det kan jeg ikke ændre på.

Jeg forsøger at bruge den ofte citerede funktion DateToSql, men får fejlen:

"'DateSerial' is not a recognized function name."

der hvor jeg forsøger at eksekvere med

SET RS=Connection.Execute(SQLstring)

Nogen bud på hvad det skyldes??

Finn



 
 
Torben Brandt (02-10-2003)
Kommentar
Fra : Torben Brandt


Dato : 02-10-03 22:23

Finn Elmgaard skrev:
> Jeg har - som mange før mig - problemer med at at udtrække poster før/efter
> en given dato fra en SQL-server.
> Datatypen i databasen er "smalldatetime" og det kan jeg ikke ændre på.
>
> Jeg forsøger at bruge den ofte citerede funktion DateToSql, men får fejlen:
>
> "'DateSerial' is not a recognized function name."
>
> der hvor jeg forsøger at eksekvere med
>
> SET RS=Connection.Execute(SQLstring)
>
> Nogen bud på hvad det skyldes??

Ja, men det er nemmest at forklare, hvis du skriver hvordan SQLstring er
defineret. Dels hvordan du opbygger den og dels hvad den indeholder
derefter. (Se evt: <URL:http://asp-faq.dk/article/?id=41>)

Torben


Finn Elmgaard (03-10-2003)
Kommentar
Fra : Finn Elmgaard


Dato : 03-10-03 06:39


"Torben Brandt" <name@domain.invalid> wrote in message
news:bli4vv$akp$2@sunsite.dk...
> Finn Elmgaard skrev:
> > Jeg har - som mange før mig - problemer med at at udtrække poster
før/efter
> > en given dato fra en SQL-server.
> > Datatypen i databasen er "smalldatetime" og det kan jeg ikke ændre på.
> >
> > Jeg forsøger at bruge den ofte citerede funktion DateToSql, men får
fejlen:
> >
> > "'DateSerial' is not a recognized function name."
> >
> > der hvor jeg forsøger at eksekvere med
> >
> > SET RS=Connection.Execute(SQLstring)
> >
> > Nogen bud på hvad det skyldes??
>
> Ja, men det er nemmest at forklare, hvis du skriver hvordan SQLstring er
> defineret. Dels hvordan du opbygger den og dels hvad den indeholder
> derefter. (Se evt: <URL:http://asp-faq.dk/article/?id=41>)
>
> Torben
>

OK, det kan du have ret i, så jeg uddyber:

Jeg anvender funktionen:

Function DateToSql(Value)
DateToSql = "DateSerial(" & Year(Value) & ", " & _
Month(Value) & ", " & _
Day(Value) & ") + " & _
"TimeSerial(" & Hour(Value) & ", " & _
Minute(Value) & ", " & _
Second(Value) & ")"
end function

Den er fundet i tidligere indlæg her i gruppen.

Så anvender jeg følgende forespørgsel:

Dato1= DateToSQL(1-10-2003) 'Egentlig en dato, der stammer fra en
Request.form

SQLstring="SELECT * FROM tabelnavn WHERE dato > " & dato1
SET RS=Connection.Execute(SQLstring)

Så får jeg fejlen:

"'DateSerial' is not a recognized function name."

Det er som om det er en fejl/mangel i SQLserveren???


Håber det hjælper til gode ideer.
Finn




Jørn Andersen (03-10-2003)
Kommentar
Fra : Jørn Andersen


Dato : 03-10-03 09:32

On Fri, 3 Oct 2003 07:39:02 +0200, "Finn Elmgaard"
<finn@xxxelmgaard.com> wrote:

>Jeg anvender funktionen:
>
>Function DateToSql(Value)
> DateToSql = "DateSerial(" & Year(Value) & ", " & _
> Month(Value) & ", " & _
> Day(Value) & ") + " & _
> "TimeSerial(" & Hour(Value) & ", " & _
> Minute(Value) & ", " & _
> Second(Value) & ")"
>end function
>
>Den er fundet i tidligere indlæg her i gruppen.
>
>Så anvender jeg følgende forespørgsel:
>
>Dato1= DateToSQL(1-10-2003) 'Egentlig en dato, der stammer fra en
>Request.form

Du mangler anførselstegn om datoen. Som det står nu er det blot nogle
tale, der bliver trukket fra hinanden:
DateToSql(1-10-2003) er derfor det samme som DateToSQL(-2012), hvilket
ikke giver mening.

Brug:
DateToSql("1-10-2003")
- Og vær sikker på, at du bruger dansk dato-format i dit script. Sæt:
Session.LCID = 1030
i toppen af dit script.

Det er også en god idé lige at validere form-output:
Dato0 = Request.Form("mindato")
If IsDate(Dato0) Then
Dato1 = DateToSql(Dato0)
End If


> SQLstring="SELECT * FROM tabelnavn WHERE dato > " & dato1
> SET RS=Connection.Execute(SQLstring)
>
>Så får jeg fejlen:
>
>"'DateSerial' is not a recognized function name."
>
>Det er som om det er en fejl/mangel i SQLserveren???

Nu kender jeg ikke MS SQL, men jeg mener også at huske fra tidligere
indlæg, at DateSerial ikke er en indbygget funktion i MS SQL.

Good luck!

--
Jørn Andersen,
Brønshøj

Kasper Katzmann (03-10-2003)
Kommentar
Fra : Kasper Katzmann


Dato : 03-10-03 08:04

> Jeg forsøger at bruge den ofte citerede funktion DateToSql, men får
> fejlen:
>
> "'DateSerial' is not a recognized function name."
>
> der hvor jeg forsøger at eksekvere med
>
> SET RS=Connection.Execute(SQLstring)
>
> Nogen bud på hvad det skyldes??

Jeg har haft et lignende problem, som jeg løste ved at skifte LCID.
Tidligere brugte jeg Session.LCID = 1030(dansk), men efter jeg ændrede LCID
til Session.LCID = 1033(US) virkede det fint.

--
Mvh
Kasper Katzmann
------------------------------
Katzmann Consulting
http://www.katzmann.dk



Jørn Andersen (03-10-2003)
Kommentar
Fra : Jørn Andersen


Dato : 03-10-03 09:33

On Fri, 3 Oct 2003 09:04:20 +0200, "Kasper Katzmann"
<kasper@FJERNESkatzmann.dk> wrote:

>> Jeg forsøger at bruge den ofte citerede funktion DateToSql, men får
>> fejlen:
>>
>> "'DateSerial' is not a recognized function name."
>>
>> der hvor jeg forsøger at eksekvere med
>>
>> SET RS=Connection.Execute(SQLstring)
>>
>> Nogen bud på hvad det skyldes??
>
>Jeg har haft et lignende problem, som jeg løste ved at skifte LCID.
>Tidligere brugte jeg Session.LCID = 1030(dansk), men efter jeg ændrede LCID
>til Session.LCID = 1033(US) virkede det fint.

Hvis output fra Form er "1-10-2003" skal
Session.LCID = 1030

--
Jørn Andersen,
Brønshøj

Jens Gyldenkærne Cla~ (03-10-2003)
Kommentar
Fra : Jens Gyldenkærne Cla~


Dato : 03-10-03 10:57

Finn Elmgaard skrev:

> Jeg forsøger at bruge den ofte citerede funktion DateToSql,
> men får fejlen:
>
> "'DateSerial' is not a recognized function name."


Hvis du læser <http://asp-faq.dk/article/?id=98> - hvor DateToSql
er gennemgået, står der øverst følgende:

,----
| DateSerial og TimeSerial virker kun til Access. Bruges MSSQL, skal
| der bruges funktionen CONVERT. Denne funktion er IKKE omtalt i det
| nedenstående.
`----

Convert kan slås op i BOL (onlinehjælpen til MSSQL) - men her er en
kort gennemgang:

Syntaks:
CONVERT(tilFormat, værdi, formatKode)

Formatet kan være smalldatetime, datetime, varchar(10), ... - kort
sagt alle almindelige datatyper. Formatkoden bruges kun til datoer
- der er et hav muligheder, men man kan nøjes med at bruge det som
i MS-terminologi hedder "italiensk" - nemlig "dd-mm-yyyy". De
fleste formater findes i to udgaver - en med tocifret år og en med
fircifret år. Her er et par eksempler på convert brugt til at lave
tekst til dato (svarende til DateToSQL):

SELECT CONVERT(datetime, '1-3-2003', 105) => 1. marts 2003

SELECT CONVERT(datetime, '2-4-04', 5) => 2. april 2004


Man kan også konvertere den anden vej:

SELECT CONVERT(varchar(12), GETDATE(), 105) => "03-10-2003"
SELECT CONVERT(varchar(12), GETDATE(), 104) => "03.10.2003"
--
Jens Gyldenkærne Clausen
Svar venligst under det du citerer, og citer kun det der er
nødvendigt for at forstå dit svar i sammenhængen. Se hvorfor og
hvordan på http://usenet.dk/netikette/citatteknik.html

Finn Elmgaard (03-10-2003)
Kommentar
Fra : Finn Elmgaard


Dato : 03-10-03 21:45


"Finn Elmgaard" <finn@xxxelmgaard.com> wrote in message
news:3f7c86c4$0$22645$ba624c82@nntp02.dk.telia.net...
> Hej gruppe
> Jeg har - som mange før mig - problemer med at at udtrække poster
før/efter
> en given dato fra en SQL-server.

Tak for alle input'ene.
Nu har jeg noget at få tiden til at gå med i weekend'en.
mvh
Finn



Søg
Reklame
Statistik
Spørgsmål : 177559
Tips : 31968
Nyheder : 719565
Indlæg : 6408929
Brugere : 218888

Månedens bedste
Årets bedste
Sidste års bedste