Avatar billede shjorth Nybegynder
17. oktober 2009 - 01:37 Der er 10 kommentarer og
1 løsning

2 dage før dato (PHP)

Hejsa.

I min db har jeg nogle datoer af formatet Y-m-d.
Med php vil jeg så gerne finde hendholdsvis 1 og 2 dage før dette tidspunkt.

Altså:
Datoen = 2009-10-16
1 dag før = 2009-10-15
2 dage før = 2009-10-14

Håber der er nogen der kan noget smart :)

God weekend
Avatar billede arne_v Ekspert
17. oktober 2009 - 04:15 #1
En mulighed:

date('Y-m-d', strtotime($s) - 2*24*60*60)
Avatar billede shjorth Nybegynder
17. oktober 2009 - 10:00 #2
Kan Y-m-d så erstattes af $row['dato'] ?
Avatar billede virtual1ty Nybegynder
17. oktober 2009 - 11:20 #3
Nej, Y-m-d angiver formatet af datoen:
Y = år
m = måned
d = dato

Altså f.eks. 2009-12-24.

Du kan derimod erstatte strtotime($s) med strtotime($row['dato']).
Avatar billede danco Nybegynder
17. oktober 2009 - 11:31 #4
Altså når jeg personligt laver den form for database plejer jeg at dele datoen op i flere celler, så jeg har dag, måned og år i hver sin celle. (ideen kommer fra relationsdatabase)

På den måde er det også meget lettere at trække 2 dage fra. Men skulle det ikke være muligt vil jeg sige at det forslag som arne har smidt virker ganske fint :)
Avatar billede showsource Seniormester
17. oktober 2009 - 14:04 #5
Man kan altid formatere et datofelt til et givent format, hvis det er gemt som et datofelt i DB.
http://dev.mysql.com/doc/refman/5.1/en/date-and-time-functions.html

En sortering på dato er vel "næsten umuligt" hvis datoen er spredt over flere felter.
Umiddelbart vil jeg mene det er langt det bedste at dato er i et felt.


$sql = "SELECT DATE_SUB(datofelt, INTERVAL 1 DAY) as igaar, DATE_SUB(datofelt, INTERVAL 2 DAY) as forgaars";

Kun i php:

$dato = "2009-10-16";
echo date("Y-m-d", strtotime("-1 days", strtotime($dato)));
echo " - ". date("Y-m-d", strtotime("-2 days", strtotime($dato)));
Avatar billede arne_v Ekspert
17. oktober 2009 - 19:04 #6
Med 3 felter ville det netop blive rigtigt svært at gå 2 dage tilbage. Så skal man nemlig håndtere når man går over månedsskift, over årsskift og skudår.
Avatar billede coderdk Praktikant
17. oktober 2009 - 20:06 #7
showsource's DATE_SUB/DATE_ADD med INTERVAL er den bedste måde ;)
Avatar billede arne_v Ekspert
17. oktober 2009 - 23:17 #8
Jeg er ikke overbevist om at SQL fremfor applikationen er det rigtige sted at lave dato manipulation.
Avatar billede arne_v Ekspert
22. november 2009 - 04:27 #9
Tid at få afsluttet her ?
Avatar billede shjorth Nybegynder
03. december 2009 - 21:29 #10
Smukt.. Svar?
Avatar billede arne_v Ekspert
03. december 2009 - 22:25 #11
Dele?

Og et svar fra mig.
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