/ 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
Udvælge datoer fra database
Fra : Martin Jensen


Dato : 04-07-07 08:47

Hej NG

Jeg skal have udvalgt nogle bestemte poster i min database, som
er afhængige af at de skal være 21 dage gamle.

Databasen er en MSSQL database, og kolonnen Callback har
datatypen datetime. Dataet i felterne står på følgende måde:
dd-mm-yyyy tt:mm:ss

Dermed vil jeg meget gerne i dag have udvalgt alle de poster hvor
der i feltet Callback står 13-06-2007 xx:xx:xx

Jeg har prøvet med følgende

set rs = conn.execute("select * from mindb_martin.Kundeservice
WHERE ([Callback]+21) = "&date&" ")

Men det virker ikke. Der bliver ikke udvalgt nogel poster, og det
er ikke fordi der ikke findes nogen poster fra den 13-06.

Er der nogen af jer der kan forklare hvorfor, og hvad jeg kan
gøre i stedet?

--
Vil du lære at kode HTML, XHTML, CSS, SSI, ASP eller ASP.NET?
- Pædagogiske tutorials på dansk
- Kom godt i gang med koderne
KLIK HER! => http://www.html.dk/tutorials

 
 
Ukendt (04-07-2007)
Kommentar
Fra : Ukendt


Dato : 04-07-07 11:15


"Martin Jensen" <martin1@barnstormers.dk> skrev
> Jeg skal have udvalgt nogle bestemte poster i min database, som
> er afhængige af at de skal være 21 dage gamle.
>
> Databasen er en MSSQL database, og kolonnen Callback har
> datatypen datetime. Dataet i felterne står på følgende måde:
> dd-mm-yyyy tt:mm:ss
>
> Dermed vil jeg meget gerne i dag have udvalgt alle de poster hvor
> der i feltet Callback står 13-06-2007 xx:xx:xx
>
> Jeg har prøvet med følgende
>
> set rs = conn.execute("select * from mindb_martin.Kundeservice
> WHERE ([Callback]+21) = "&date&" ")
>
> Men det virker ikke. Der bliver ikke udvalgt nogel poster, og det
> er ikke fordi der ikke findes nogen poster fra den 13-06.
>
> Er der nogen af jer der kan forklare hvorfor, og hvad jeg kan
> gøre i stedet?

21 dage gamle...
WHERE ([Callback]-21)
Bjarne



Martin Jensen (04-07-2007)
Kommentar
Fra : Martin Jensen


Dato : 04-07-07 11:56

bsn wrote in dk.edb.internet.webdesign.serverside.asp:
> 21 dage gamle...
> WHERE ([Callback]-21)
> Bjarne
>

Jeg får følgende fejl når jeg indsætter det ovenstående:
Microsoft OLE DB Provider for SQL Server error '80040e14'
Line 1: Incorrect syntax near ')'.

/kundeservice/tasks.asp, line 34

set rs = conn.execute("select * from mindb_martin.Kundeservice WHERE
([Callback]-21) ") <-- Linie 34

Jeg har lidt på fornemmelsen at det kan være fordi der i nogle af
felterne er værdien NULL. Kan dette være rigtigt, og hvad kan jeg
eventuelt gøre for at rette fejlen?


--
Vil du lære at kode HTML, XHTML, CSS, SSI, ASP eller ASP.NET?
- Pædagogiske tutorials på dansk
- Kom godt i gang med koderne
KLIK HER! => http://www.html.dk/tutorials

Ukendt (04-07-2007)
Kommentar
Fra : Ukendt


Dato : 04-07-07 16:54


"Martin Jensen" <martin1@barnstormers.dk> skrev
>> 21 dage gamle...
>> WHERE ([Callback]-21)
>> Bjarne
>>
>
> Jeg får følgende fejl når jeg indsætter det ovenstående:
> Microsoft OLE DB Provider for SQL Server error '80040e14'
> Line 1: Incorrect syntax near ')'.
>
> /kundeservice/tasks.asp, line 34
>
> set rs = conn.execute("select * from mindb_martin.Kundeservice WHERE
> ([Callback]-21) ") <-- Linie 34

OK - Skud fra hoften:
set rs = conn.execute("select * from mindb_martin.Kundeservice WHERE
Callback = Date-21")

> Jeg har lidt på fornemmelsen at det kan være fordi der i nogle af
> felterne er værdien NULL. Kan dette være rigtigt, og hvad kan jeg
> eventuelt gøre for at rette fejlen?

Det skulle ikke betyde noget...
Ved ikke om MSSQL har en speciel syntax...
Bjarne



Leif Neland (04-07-2007)
Kommentar
Fra : Leif Neland


Dato : 04-07-07 18:51

Martin Jensen wrote:
> Hej NG
>
> Jeg skal have udvalgt nogle bestemte poster i min database, som
> er afhængige af at de skal være 21 dage gamle.
>
> Databasen er en MSSQL database, og kolonnen Callback har
> datatypen datetime. Dataet i felterne står på følgende måde:
> dd-mm-yyyy tt:mm:ss
>
> Dermed vil jeg meget gerne i dag have udvalgt alle de poster hvor
> der i feltet Callback står 13-06-2007 xx:xx:xx
>
> Jeg har prøvet med følgende
>
> set rs = conn.execute("select * from mindb_martin.Kundeservice
> WHERE ([Callback]+21) = "&date&" ")
>
> Men det virker ikke. Der bliver ikke udvalgt nogel poster, og det
> er ikke fordi der ikke findes nogen poster fra den 13-06.
>
> Er der nogen af jer der kan forklare hvorfor, og hvad jeg kan
> gøre i stedet?

Du søger efter de poster, hvor Callback har værdien "13-06-2007 00:00:00"

Hvis du prøvede noget á la "Callback+21 = now()", så ville du kun få de
records, hvor Callback var "13-06-2007 19:50:12"

Du skal enten bruge "between '13-06-2007 00:00:00' and '13-06-2007
23:59:59'

Eller også skal du runde Callback til en hel dato.

Se f.ex.
http://www.bennadel.com/blog/122-Getting-Only-the-Date-Part-of-a-Date-Time-Stamp-in-SQL-Server.htm

Leif



Martin Jensen (05-07-2007)
Kommentar
Fra : Martin Jensen


Dato : 05-07-07 09:03

Leif Neland wrote in dk.edb.internet.webdesign.serverside.asp:
>
> Du søger efter de poster, hvor Callback har værdien "13-06-2007 00:00:00"
>
> Hvis du prøvede noget á la "Callback+21 = now()", så ville du kun få de
> records, hvor Callback var "13-06-2007 19:50:12"
>
> Du skal enten bruge "between '13-06-2007 00:00:00' and '13-06-2007
> 23:59:59'

Det driller mig godt nok meget det her dato halløj.
Nu har jeg prøvet at få lavet noget som jeg troede ville kunne bruges til between

Men nu får jeg følgende fejl

Microsoft OLE DB Provider for SQL Server error '80040e07'
The conversion of a char data type to a datetime data type resulted in an out-of-range datetime
value.

/kundeservice/tasks.asp, line 36


strDate1 = date-21&" 00:00:00"
strDate2 = date-21&" 23:59:59"
set rs = conn.execute("select * from soelbec_martin.Kundeservice WHERE [Callback] BETWEEN
'"&strDate1&"' AND '"&strDate2&"' ") <----- linie 36


Jeg har prøvet at bruge CDate() uden held. Hvad gør jeg forkert?




> Eller også skal du runde Callback til en hel dato.
>
> Se f.ex.
> http://www.bennadel.com/blog/122-Getting-Only-the-Date-Part-of-a-Date-Time-Stamp-in-SQL-Server.htm

øhhh... Det forstår jeg ikke helt... Må prøve at lege med det i weekenden hvor der er mere tid til
leg:)

--
Vil du lære at kode HTML, XHTML, CSS, SSI, ASP eller ASP.NET?
- Pædagogiske tutorials på dansk
- Kom godt i gang med koderne
KLIK HER! => http://www.html.dk/tutorials

Leif Neland (05-07-2007)
Kommentar
Fra : Leif Neland


Dato : 05-07-07 09:53

Martin Jensen wrote:
> Leif Neland wrote in dk.edb.internet.webdesign.serverside.asp:
>>
>> Du søger efter de poster, hvor Callback har værdien "13-06-2007
>> 00:00:00"
>>
>> Hvis du prøvede noget á la "Callback+21 = now()", så ville du kun få
>> de records, hvor Callback var "13-06-2007 19:50:12"
>>
>> Du skal enten bruge "between '13-06-2007 00:00:00' and '13-06-2007
>> 23:59:59'
>
> Det driller mig godt nok meget det her dato halløj.
> Nu har jeg prøvet at få lavet noget som jeg troede ville kunne bruges
> til between
>
> Men nu får jeg følgende fejl
>
> Microsoft OLE DB Provider for SQL Server error '80040e07'
> The conversion of a char data type to a datetime data type resulted
> in an out-of-range datetime value.
>
> /kundeservice/tasks.asp, line 36
>
>
> strDate1 = date-21&" 00:00:00"
> strDate2 = date-21&" 23:59:59"
> set rs = conn.execute("select * from soelbec_martin.Kundeservice
> WHERE [Callback] BETWEEN '"&strDate1&"' AND '"&strDate2&"' ") <-----
> linie 36
>
Hvad er sql'en?

Jeg har som vane i stedet for conn.execute("select.... lave det i to linier:
sql = "select ..."
set rs = conn.execute(sql)

Så er det lettere i debug-fasen at indsætte response.write sql&"<br>"

Leif

>
> Jeg har prøvet at bruge CDate() uden held. Hvad gør jeg forkert?
>
>
>
>
>> Eller også skal du runde Callback til en hel dato.
>>
>> Se f.ex.
>> http://www.bennadel.com/blog/122-Getting-Only-the-Date-Part-of-a-Date-Time-Stamp-in-SQL-Server.htm
>
> øhhh... Det forstår jeg ikke helt... Må prøve at lege med det i
> weekenden hvor der er mere tid til leg:)


WHERE CAST(
FLOOR( CAST( Callback AS FLOAT ) +21 )
AS DATETIME) = '" & strIdag & "'"

Leif




Martin Jensen (05-07-2007)
Kommentar
Fra : Martin Jensen


Dato : 05-07-07 11:15

Leif Neland wrote in dk.edb.internet.webdesign.serverside.asp:
> Hvad er sql'en?

Her er SQL, incl fejl

select * from soelbec_martin.Kundeservice WHERE [Callback] BETWEEN '14-06-2007 00:00:00' AND '14-06-2007
23:59:59'
Microsoft OLE DB Provider for SQL Server error '80040e07'

The conversion of a char data type to a datetime data type resulted in an out-of-range datetime value.

/kundeservice/tasks.asp, line 39

strSQL = "select * from soelbec_martin.Kundeservice WHERE [Callback] BETWEEN '"&strDate1&"' AND
'"&strDate2&"' "
response.Write strSQL
   
set rs = conn.execute(strSQL)<--- linie 39



>
> Jeg har som vane i stedet for conn.execute("select.... lave det i to linier:
> sql = "select ..."
> set rs = conn.execute(sql)
>
> Så er det lettere i debug-fasen at indsætte response.write sql&"<br>"
>
> Leif
>


--
Vil du lære at kode HTML, XHTML, CSS, SSI, ASP eller ASP.NET?
- Pædagogiske tutorials på dansk
- Kom godt i gang med koderne
KLIK HER! => http://www.html.dk/tutorials

Martin Jensen (05-07-2007)
Kommentar
Fra : Martin Jensen


Dato : 05-07-07 17:26

Efter at have kæmpet meget har jeg fundet frem til noget jeg selv syntes er underligt

Når jeg kigger i min database ser jeg værdierne som dd-mm-yyyy hh:mm:ss, men nu har jeg prøvet at udvælge
datoer, som er opbygget mm-dd-yyyy, altså hvor dag og måned er byttet om i forhold til hvad jeg kan se. Og
det virker. Meget mystisk syntes jeg selv.

Jeg er så midlertidigt stødt på et nyt problem.
Ved at opbygge datoerne på denne måde:
strDate1 = month(now)&"-"&day(now)&"-"&year(now)&" 00:00:00"
strDate2 = month(now)&"-"&day(now)&"-"&year(now)&" 23:59:59"
får jeg datoer, så jeg kan udvælge data der har dagsdato i feltet Callback. Men nu vil jeg jo gerne have
trukket 21 dage fra denne dato.
Når jeg prøver på dette, kan jeg ikke få koden til at forstå at formatet er mm-dd-yyyy, og dermed bliver
regnestykket ikke rigtig.

Er der nogen der kan komme med et hint til hvordan jeg kan løse dette let?

--
Vil du lære at kode HTML, XHTML, CSS, SSI, ASP eller ASP.NET?
- Pædagogiske tutorials på dansk
- Kom godt i gang med koderne
KLIK HER! => http://www.html.dk/tutorials

Leif Neland (16-07-2007)
Kommentar
Fra : Leif Neland


Dato : 16-07-07 09:23


"Martin Jensen" <martin1@barnstormers.dk> skrev i en meddelelse
news:468d1ba7$0$90269$14726298@news.sunsite.dk...
> Efter at have kæmpet meget har jeg fundet frem til noget jeg selv syntes
er underligt
>
> Når jeg kigger i min database ser jeg værdierne som dd-mm-yyyy hh:mm:ss,
men nu har jeg prøvet at udvælge
> datoer, som er opbygget mm-dd-yyyy, altså hvor dag og måned er byttet om i
forhold til hvad jeg kan se. Og
> det virker. Meget mystisk syntes jeg selv.

Det er måske forvirring om hvilket sprog(-format) der benyttes.
Om asp måske er sat op til dansk dd-mm-yyyy, mens databasen er på engelsk
mm-dd-yyyy.

Leif



Martin Jensen (05-07-2007)
Kommentar
Fra : Martin Jensen


Dato : 05-07-07 12:14

Leif Neland wrote in dk.edb.internet.webdesign.serverside.asp:

> WHERE CAST(
> FLOOR( CAST( Callback AS FLOAT ) +21 )
> AS DATETIME) = '" & strIdag & "'"

Dette har jeg også prøvet nu, dog med date i stedet for strIdag. (Det burde vel også være det du mente)

Der kommer ingen fejl, men der kommer heller ikke noget i record set'et

Jeg fik en gang at vide at det ikke altid var lige sjovt at arbejde med datoer, og syntes da godt nok at
det giver mig nogle grå hår det her...

--
Vil du lære at kode HTML, XHTML, CSS, SSI, ASP eller ASP.NET?
- Pædagogiske tutorials på dansk
- Kom godt i gang med koderne
KLIK HER! => http://www.html.dk/tutorials

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

Månedens bedste
Årets bedste
Sidste års bedste