|
| 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
| |
|
|