/ 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
Datoproblem igen
Fra : Finn Elmgaard


Dato : 06-01-07 02:00

Jeg skal udtrække data fra en SQLserver, hvor jeg ikke har mulighed for at
ændre struktur og definitioner.

Udtrækket er af typen:

SELECT * FROM tabel WHERE Datofelt > brugerinput.

Problemet er, at datofeltet er af typen char og dataoer er gemt i formatet:
yyyy-mm-dd hh:mm:ss

Jeg kan naturligvis styre mit brugerinput format, men er det muligt at
opsætte et sikkert kriterie på et felt af denne type?

mvh
Finn





 
 
Jens Gyldenkærne Cla~ (05-01-2007)
Kommentar
Fra : Jens Gyldenkærne Cla~


Dato : 05-01-07 17:24

Finn Elmgaard skrev:

> SELECT * FROM tabel WHERE Datofelt > brugerinput.
>
> Problemet er, at datofeltet er af typen char og dataoer er
> gemt i formatet: yyyy-mm-dd hh:mm:ss

Det lyder tosset, men du kan konvertere til datetime i
forespørgslen:

SELECT CONVERT(datetime, Datofelt, 121)



> Jeg kan naturligvis styre mit brugerinput format,


Du kan så også bruge CONVERT til at få dit brugerinput konverteret
til en dato. Hvis det bare er en dato (uden tid), kan det fx gøres
som her: CONVERT(datetime, '5-1-2006', 105)
(indsæt brugerinputtet i stedet for den faste værdi).

Med tidsangivelse er det ifølge manualen til T-SQL mere besværligt
- da de formater der anvender tid enten skriver måneden som en
forkortelse (der så er landeafhængig) eller også bruger "bagvendt"
notation (med året først, svarende til din char-værdi).

Men man kan øjensynligt bare tilføje tiden som hh:mm til ovennævnte
CONVERT-udtryk, og så læses det helt fint:

select CONVERT(datetime, '5-1-2006 12:24', 105)


Ved at konvertere begge sider til en dato skulle du være sikret mod
formateringsrelaterede sammenligningsfejl.
--
Bolig søges. Andel eller leje i Emdrup, Nordvest, Nørrebro, Søborg
eller Brønshøj, max 6000 pr. måned.
Kontakt pr. mail - nospam(at)gyros.dk
Jens Gyldenkærne Clausen

Finn Elmgaard (06-01-2007)
Kommentar
Fra : Finn Elmgaard


Dato : 06-01-07 19:56

"Jens Gyldenkærne Clausen" <jens@gyros.invalid> wrote in message
news:Xns98AFB1058BAC7jcdmfdk@gyrosmod.dtext.news.tele.dk...
> Finn Elmgaard skrev:
>
> > SELECT * FROM tabel WHERE Datofelt > brugerinput.
> >
> > Problemet er, at datofeltet er af typen char og dataoer er
> > gemt i formatet: yyyy-mm-dd hh:mm:ss
>
> Det lyder tosset, men du kan konvertere til datetime i
> forespørgslen:
>
> SELECT CONVERT(datetime, Datofelt, 121)
>

Tak for hjælpen. Det er lige netop hvad der var behov for - jeg har
tidligere brugt CONVERT,
men troede kun den virkede den anden vej, altså ved indsæt i databasen, men
det her er jo ret smart.

>
> Ved at konvertere begge sider til en dato skulle du være sikret mod
> formateringsrelaterede sammenligningsfejl.

Det vil nok være en god idé, så det gør jeg.

mvh
Finn

> --
> Bolig søges. Andel eller leje i Emdrup, Nordvest, Nørrebro, Søborg
> eller Brønshøj, max 6000 pr. måned.
> Kontakt pr. mail - nospam(at)gyros.dk
> Jens Gyldenkærne Clausen



Jens Gyldenkærne Cla~ (06-01-2007)
Kommentar
Fra : Jens Gyldenkærne Cla~


Dato : 06-01-07 20:34

Finn Elmgaard skrev:

> Tak for hjælpen. Det er lige netop hvad der var behov for -
> jeg har tidligere brugt CONVERT,
> men troede kun den virkede den anden vej, altså ved indsæt i
> databasen, men det her er jo ret smart.

Ja, CONVERT er ret god at kende - den kan konvertere både til og
fra datoer.

NB: Dit ur - eller din tidszoneangivelse - er et godt stykke ved
siden af.

--
Jens Gyldenkærne Clausen
»Diplomatiet består netop i, at de gamle kommatister kan få lov til
at tro, at de har vundet. Men i virkeligheden har de tabt.«
Ole Togeby i Information

JB (05-01-2007)
Kommentar
Fra : JB


Dato : 05-01-07 17:48


> Jeg skal udtrække data fra en SQLserver, hvor jeg ikke har mulighed for at
> ændre struktur og definitioner.
>
> Udtrækket er af typen:
>
> SELECT * FROM tabel WHERE Datofelt > brugerinput.
>
> Problemet er, at datofeltet er af typen char og dataoer er gemt i
> formatet:
> yyyy-mm-dd hh:mm:ss
>
> Jeg kan naturligvis styre mit brugerinput format, men er det muligt at
> opsætte et sikkert kriterie på et felt af denne type?
>

Se http://www.dan.co.uk/mysql-date-format/

JB



Finn Elmgaard (06-01-2007)
Kommentar
Fra : Finn Elmgaard


Dato : 06-01-07 20:06

"JB" <nospam@nospam.dk> wrote in message
news:459e81b1$0$13969$edfadb0f@dread15.news.tele.dk...
>
> > Jeg skal udtrække data fra en SQLserver, hvor jeg ikke har mulighed for
at
> > ændre struktur og definitioner.
>
> Se http://www.dan.co.uk/mysql-date-format/
>
> JB

Tak for dit svar, men så vidt jeg lige kan se går det vistnok specifikt på
MySQL, hvor det tilsyneladende svarer til CONVERT funktionen i SQL Server.

mvh
Finn




Søg
Reklame
Statistik
Spørgsmål : 177547
Tips : 31968
Nyheder : 719565
Indlæg : 6408797
Brugere : 218887

Månedens bedste
Årets bedste
Sidste års bedste