Avatar billede henrik2000 Nybegynder
06. april 2001 - 13:44 Der er 13 kommentarer og
1 løsning

problemer med select-sætning...

Hej!

Jeg har følgende i databasen: et felt der hedder id og et felt der hedder dato_ult_md. Hver måned bliver der indsat det samme id(det er ikke nogen primær nøgle) med en dato der er ca. en måned ældre. Jeg vil så gerne selecte dato_ult_md-feltet hvor dato er med med den seneste. Giver det nogen mening? Jeg har forsøgt mig med følgende:

sql = \"select * from mdl_indexeret_data where (dato_ult_md >= CONVERT(DATETIME,\' & dato_ult_md > \" & year(date) & \"-\" & month(date) & \"-\" & \"01\" & \" 00:00:00\', 102))\"

Men den kommer med denne her fejl:
Syntax error converting datetime from character string.

Nogen syntaks-hajer der kan hjælpe her??? Feltet dato_ult_md er af typen datetime. Formatet i databasen er dd-mm-yy.

Avatar billede slash Nybegynder
06. april 2001 - 13:46 #1
kan du ikke selecte top 1 på din dato?
Avatar billede henrik2000 Nybegynder
06. april 2001 - 13:47 #2
hvordan?
Avatar billede slash Nybegynder
06. april 2001 - 13:51 #3
select top(1) dato_ult_md from mdl_indexeret_data order by dato_ult_md desc
Avatar billede henrik2000 Nybegynder
06. april 2001 - 13:56 #4
det virker ikke helt - den kommer med en fejl ved parentesen
Incorrect syntax near \'(\'.
Avatar billede slash Nybegynder
06. april 2001 - 14:00 #5
kan ikke huske om der skal være () omk. (1) - prøv dette:

select top 1 dato_ult_md from mdl_indexeret_data order by dato_ult_md desc
Avatar billede henrik2000 Nybegynder
06. april 2001 - 14:03 #6
det virker heller ikke. Den viser ikke nogen fejl nu på min asp-visningsside, men den viser en forkert dato, ikke den seneste...

Avatar billede slash Nybegynder
06. april 2001 - 14:08 #7
hm.... så prøv at selecte med top 10 eller top 50, for at se om det er dati der er ens... så den fucker op... måske du kunne brygge en where del på select\'en

select top 1 dato_ult_md from mdl_indexeret_data where ID = 102 order by dato_ult_md desc

Avatar billede slash Nybegynder
06. april 2001 - 14:10 #8
kom lige i tanke om du kunne bruge max(dato_ult_md)???
Avatar billede henrik2000 Nybegynder
06. april 2001 - 14:12 #9
stadig forkert...
Denne her sætning har jeg fået til at virke inde i sql server enterprise manager:
SELECT *
FROM mdl_indexeret_data
WHERE (dato_ult_md < CONVERT(DATETIME,
    \'2001-04-01 00:00:00\', 102) AND
    dato_ult_md > CONVERT(DATETIME, \'2001-03-01 00:00:00\',
    102)) ORDER BY dato_ult_md DESC

Jeg prøver at vise en dato der hedder 31-03-01, altså 31. marts 2001.

Hvorfor virker den ikke på min visningsside???

Avatar billede slash Nybegynder
06. april 2001 - 14:18 #10
sandsynligvis fordi der er rod i formaterne når du selecter via .asp mod sql-serveren! Det er svært konkret at sige hvorfor når man ikke selv sidder med svinet... behøves du at bruge convert?
Avatar billede henrik2000 Nybegynder
06. april 2001 - 14:26 #11
Nej det behøver jeg ikke. Denne her virker også i Enterprise Manager:

SELECT K.* FROM mdl_indexeret_data K WHERE K.dato_ult_md IN (SELECT dato_ult_md = MAX(dato_ult_md) FROM mdl_indexeret_data WHERE K.id = 35)

Det er ligesom om den ikke forstår syntaksen rigtigt på min asp-side. Jeg tager ovenstående og siger sql=\"    \"

og putter det ind i midten - men det funker ikke rigtigt...

Avatar billede slash Nybegynder
06. april 2001 - 14:28 #12
det må være forsk. datoformater på sql-server og webserver! hvis du vil have dk-format på aspsider skriver du
<%=session.lcid=1030%>
Avatar billede henrik2000 Nybegynder
06. april 2001 - 14:30 #13
det driller i hvert fald. Jeg tror lige jeg lader den ligge et par dage og prøver igen! Ellers tak for hjælpen!

Avatar billede nolle_k Nybegynder
14. april 2001 - 08:11 #14
Prøv at konvertere datoen til en float i stedet for og så sammen ligne disse

Altså

CONVERT(float, xx)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Computerworld tilbyder specialiserede kurser i database-management

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester