webForumDet fria alternativet
Logga in / Bli medlem

datum fel

Databaser & SQL

7 svar · 349 visningar · startad av henkz

Medlem sedan apr. 2002183 inlägg
Trådstart#1

Koden nedan fungerar inget vidare. Det som händer är att alla medlemmar som var inloggade för exakt en månad sedan visas.

Jag vill endast få fram dem som varit inloggad det senaste dygnet(24h)

Sql = "Select count(*) as Found from user where logfil between '"&DateAdd("d",-1,now()) &"' AND '"&now()&"'"

db= mysql 4.x
datatyp för logfil: varchar(30) -Vill behålla denna typ..

Medlem sedan dec. 200012 464 inlägg
#2

varchar(30) -Vill behålla denna typ..

Varför?

Sql = "Select count(*) as Found from user " & _
" where logfil between Date_Sub(current_date, interval 1 day) and current_date "

Flyttas från Mysql

Medlem sedan apr. 2002183 inlägg
#3

Jag försökte ändra datatyp, men det ställde bara till det.
Webbservern var förrut placerad i annat land och hade inte stöd för svenska. Använde då tyskdatum och servern var linux med sunasp. Nu använder jag istället en svensk winserver.

Koden ovan gav resultatet: 0

Det måste bero på lagningen av datumet.
logfil= 07.05.2004 07:02:03

Går detta att fixa tror du?

Medlem sedan dec. 200012 464 inlägg
#4

Om alla värden har samma format så borde

where 
concat(substring(logfile from 7 for 4), '-',
           substring(logfile from 4 for 2) , '-'
           substring(logfile from 1 for 2))
between date_sub(current_date,interval 1 day) and current_date

Om du använder en datetime datatyp och sql-funktioner (t.ex. current_timestamp) för att lagra datum så slipper du krångel.

Medlem sedan apr. 2002183 inlägg
#5

Får tyvärr felet:

MySQL][ODBC 3.51 Driver][mysqld-4.0.17-nt]You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near '(substring(logfile from 7 for 4), '-', substring(logfile from 4

Medlem sedan apr. 2002183 inlägg
#6

Kom på en sak.
Om en person inte har aktiverat sitt konto, blir "logfil" tomt!
Då kanske inte din kod ovan fungerar...

Medlem sedan dec. 200012 464 inlägg
#7

Det fel som du får har inget att göra med vilket data som finns i tabellen.

Jag hade missat ett komma

select count(*) from found
where 
concat(substring(logfile from 7 for 4), '-',
           substring(logfile from 4 for 2) , '-',
           substring(logfile from 1 for 2))
between date_sub(current_date,interval 1 day) and current_date
Medlem sedan apr. 2002183 inlägg
#8

Fungerar perfekt!

Tack så mycket!

388 ms totalt · 4 externa anrop · v20260731065814-full.51f67c91
122 ms — deklarationer (db)
132 ms — hämta statistik (db)
132 ms — hämta tråd, inlägg och bilagor (db)
121 ms — ändringar (db)