Avatar billede little_kim86 Nybegynder
18. januar 2006 - 19:10 Der er 29 kommentarer og
1 løsning

Få udkast med en bestemt del af en dato

Hej allesammen


Jeg sidder og har et problem med noget hvor det skal være muligt at kunne søge på månendens nummer i en database men hvordan skal jeg hive det ud? Er det muligt at hive ud ligesom f.eks. "where tid like '%%'"???

Mine tider er skrevet ind som datatime f.eks. 2005-10-17 14:46:28

Håber i forstår...
Avatar billede nielle Nybegynder
18. januar 2006 - 19:19 #1
... WHERE Month(ditDatoFelt) = 1
Avatar billede little_kim86 Nybegynder
18. januar 2006 - 19:23 #2
Finde den så selv ud af hva plads den skal finde det på? Har du en side til mere om det der?
Avatar billede nielle Nybegynder
18. januar 2006 - 19:36 #3
Hvis dit tid-felt er defineret til at være et datetime-felt, giver Month() funktionen månedes-værdien af dette.

http://dev.mysql.com/doc/refman/5.0/en/date-and-time-functions.html
Avatar billede little_kim86 Nybegynder
18. januar 2006 - 20:01 #4
Det virker jo som det skal næsten... Kan bare ikke få det til at virke med dagene...

Har skrevet DAY(tid)='$dd', ved md har jeg skrevet MONTH(tid)='$mm'...

Syntes da det ser ens ud, så kan ikke forstå det ikke virker...
Avatar billede nielle Nybegynder
18. januar 2006 - 20:29 #5
Hvad mener du med $dd og $mm? Der skal stå:

... WHERE Day(tid)=18 AND Month(tid)=1

- hvis det er "i dag". Det skal f.eks. ikke '-tegn rundt om tallene.
Avatar billede little_kim86 Nybegynder
18. januar 2006 - 20:36 #6
Ja, den får sine data fra nogle variabler... og så går den jo ind i databasen og finde noget hvor det f.eks står 18 på dagen plads...
Avatar billede little_kim86 Nybegynder
18. januar 2006 - 20:39 #7
Laver f.eks en søgning på 10/12-2006

Det giver: where DAY(tid)='10' and MONTH(tid)='20' and YEAR(tid)='2006' Men den skiver at der er fejl med day(tid)='10'...

Hvis jeg lader vær med at tage dage med i søgningen, virker det fint...
Avatar billede little_kim86 Nybegynder
18. januar 2006 - 20:40 #8
ups:

where DAY(tid)='10' and MONTH(tid)='12' and YEAR(tid)='2006'
Avatar billede nielle Nybegynder
18. januar 2006 - 20:42 #9
Som sagt: uden '-tegn rundt om tallene!
Avatar billede nielle Nybegynder
18. januar 2006 - 20:45 #10
Alternativt kan du gøre sådan:

... WHERE Date(tid, '%d-%m-%Y') = '18-01-2006'
Avatar billede little_kim86 Nybegynder
18. januar 2006 - 20:49 #11
De tegn som du snakker om gør ikke noget, har prøvet at fjerne dem... Men det gode ved at skrive MONTH(tid) er at du både kan skrive 01 og bare 1. Kan du også gøre det med Date(tid, '%d-%m-%Y') = '18-01-2006'???
Avatar billede nielle Nybegynder
18. januar 2006 - 21:10 #12
Du kan jo altid variere på %d og %m - beskrevet i Date() funktionen - hvis du vil.
Avatar billede little_kim86 Nybegynder
18. januar 2006 - 21:14 #13
Ja men har siddet og kigget lidt på det... Det gidder heller ikke at virke kan ikke lige forstå det... På min side skriver jeg mit where stykke ud og det sådan ud:

where DAY(tid)=10

Så skriver den:

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 '(tid)=10' at line 1

Min mysql linie ser sådan ud:

$hent_taeller = mysql_query("SELECT id, email, ip, date_format(tid, '%d/%m-%Y, %H:%i') as tiden from tæller $sogning order by tid desc limit $s,$pr_side");

I variablen $sogning ligger where sætningen...

Kan virkelig ikke forstå hvorfor den laver fejl...

Kan du se det???
Avatar billede nielle Nybegynder
18. januar 2006 - 21:17 #14
Den SQL som fejler med "where DAY(tid)=10" er ikke nu den som du viser:

$hent_taeller = mysql_query("SELECT id, email, ip, date_format(tid, '%d/%m-%Y, %H:%i') as tiden from tæller $sogning order by tid desc limit $s,$pr_side");

- for der er der slet ikke noget kald til Day().
Avatar billede little_kim86 Nybegynder
18. januar 2006 - 21:19 #15
Jo som jeg skrev oven over bliver $sogning skiftet ud med where DAY(tid)=10...
Avatar billede nielle Nybegynder
18. januar 2006 - 21:23 #16
Så er det nok fordi at du kaller din tabel for "tæller" - det er ikke så godt at bruge danske bogstaver i et tabel eller felt navn. Måske kan du redde det ved at omgive tabel-navnet med `-tegn, altså:

$hent_taeller = mysql_query("SELECT id, email, ip, date_format(tid, '%d/%m-%Y, %H:%i') AS tiden FROM `tæller` $sogning ORDER BY tid DESC LIMIT $s,$pr_side");
Avatar billede little_kim86 Nybegynder
18. januar 2006 - 21:23 #17
Selv om jeg skrive det helt ind i min mysql linie laver den samme fejl...

$hent_taeller = mysql_query("SELECT id, email, ip, date_format(tid, '%d/%m-%Y, %H:%i') as tiden from tæller where DAY(tid)=10 order by tid desc limit $s,$pr_side");

Noget tyder på at det day ikke rigtigt virker???
Avatar billede nielle Nybegynder
18. januar 2006 - 21:27 #18
Du har stadig ikke `-tegn rundt om dit tabelnavn.
Avatar billede little_kim86 Nybegynder
18. januar 2006 - 21:33 #19
Det gør ingen forskeld at lave det om... Har prøvet at andre tabel navnet til taeller... Samme fejl...
Avatar billede nielle Nybegynder
18. januar 2006 - 21:50 #20
Prøv at udskrive SQL'en før at du forsøger at udføre den:

$sql = "SELECT id, email, ip, date_format(tid, '%d/%m-%Y, %H:%i') AS tiden FROM `tæller` $sogning ORDER BY tid DESC LIMIT $s,$pr_side";
echo "DEBUG: " . $sql . "<br>";
$hent_taeller = mysql_query($sql) or die(mysql_error());
Avatar billede little_kim86 Nybegynder
18. januar 2006 - 21:54 #21
Samme fejl... Det debuggeren skriver er:

SELECT id, email, ip, date_format(tid, '%d/%m-%Y, %H:%i') as tiden from tæller where DAY(tid)=17 order by tid desc limit 0,50.

Det er jo rigtig nok... Hvis jeg prøver at søge på en månede skriver den:

SELECT id, email, ip, date_format(tid, '%d/%m-%Y, %H:%i') as tiden from tæller where MONTH(tid)=10 order by tid desc limit 0,50
Avatar billede nielle Nybegynder
18. januar 2006 - 22:04 #22
Og den første giver fejl, mens at den anden fungere korrekt?
Avatar billede little_kim86 Nybegynder
18. januar 2006 - 22:07 #23
jep, helt rigtigt... Forstår det ikke...
Avatar billede nielle Nybegynder
18. januar 2006 - 22:08 #24
Prøv med DAYOFMONTH() i stedet for DAY()
Avatar billede little_kim86 Nybegynder
18. januar 2006 - 22:13 #25
Undskyld, den skriver følgende fejl ved day:

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 '(tid)=18 order by tid desc limit 0,50' at line 1
Avatar billede nielle Nybegynder
18. januar 2006 - 22:15 #26
Ja, det lyder jo som om at den ikke kender Day(). Måsk er det en lidt ældre MySQL du arbejder på. Men så burde DAYOFMONTH() virke i stedet.
Avatar billede little_kim86 Nybegynder
18. januar 2006 - 22:23 #27
Okay Jeg arbejder på MySQL 4.0.21... Nu virker det, Du er sgu en gutter man... Men 4.0.21 er der ikke så vildt gammel?
Avatar billede little_kim86 Nybegynder
18. januar 2006 - 22:27 #28
Den mit webhotel køre med er version 4.1.12... Men lige meget... Kan ske det havde virket hvis jeg bare havde lagt det op på serveren og tjekket det der...

Som tak for hjælpen har jeg lige hævet point fra 30 til 60, du hang jo ved længe her... Så ligger du lige et svar?
Avatar billede nielle Nybegynder
18. januar 2006 - 22:34 #29
Den nyeste version er MySQL 5.0 - 4.0.21 er i hvert fald over 1 år gammel (06 Sep 2004). Om man kan sige at det er **gammelt** er jo nok en smagssgag, men det er øjensynligt gammelt nok til at aliaset Day() (alias for DayOfMonth()) ikke er defineret der. Jeg ved faktisk ikke om den er med i 4.1.12.

... og et svar :^)
Avatar billede nielle Nybegynder
19. januar 2006 - 18:43 #30
Takker for point :^)
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
Vi tilbyder markedets bedste kurser inden for webudvikling

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