Avaleht
uus teema   vasta Tarkvara »  Programmeerimine »  Kuupäevade võrdlemine (php & SQL) märgi kõik teemad loetuks
märgi mitteloetuks
vaata eelmist teemat :: vaata järgmist teemat
Hinnavaatlus :: Foorum :: Uudised :: Ärifoorumid :: HV F1 ennustusvõistlus :: Pangalink :: Telekavad :: HV toote otsing
autor
sõnum Saada viide sõbrale.  :: Teata moderaatorile teata moderaatorile
otsing:  
SiMka
HV kasutaja
SiMka

liitunud: 01.10.2005




sõnum 21.09.2009 21:01:11 Kuupäevade võrdlemine (php & SQL) vasta tsitaadiga

Terv,

Hetkel siis sellise probleemi ees, et SQL baasi lisatakse kuupäev järgneval kujul: pp.kk.aaaa (nt 21.09.2009)
Oleks siis vaja väheke abi kuidas kontrollida kuupäevi php's, ehk siis teisisõnu: php's võtame kuupäeva date() funktsiooniga
date(d.".".m.".".Y);
, mis kuvab tänase kuupäeva samamoodi nagu seda on kirjas SQL tabelis.
Probleem seisneb selle, et oleks vaja mitte kuvada tänasest kuupäevast vanemaid asju, kuid lihtsa
WHERE date > '".date(d.".".m.".".Y)."'
lausega asi ei tööta, kuna arvestab ainult (vist) esimest numbrit, ehk siis päeva.

Segane jutt, kuid kirjutame siia siis ka SQL lause, et asi natuke selgem oleks:

$date = date(d.".".m.".".Y); // Tänane kuupäev, näiteks 21.09.2009
$q = mysql_query("SELECT * FROM `list` WHERE `endDate` > '$date' AND `ID` = '$debateID'") or die(mysql_error()); // endDate on tabelis näiteks 12.10.2009


Antud päringuga "asja" ei kuvata, kuna esimene number on 12 ja tänane kuupäev on 21. Oleks lõpukuupäev 22 või suurem, kuvataks ka "asja", kuudest ja aastatest olenemata.


Igasugune abi oleks teretulnud, tabeli baasi ümber eriti muuta ei tahaks, kuna selleks oleks liiga palju tööd, kuid kui mingit võimalust pole, eks siis viimases hädas tuleks ka seda teha. Hetkel endal mõistus otsas ja ideid enam pole icon_sad.gif
Kommentaarid: 15 loe/lisa Kasutajad arvavad:  :: 0 :: 0 :: 14
tagasi üles
vaata kasutaja infot saada privaatsõnum
mikk36
HV Guru
mikk36

liitunud: 21.02.2004



Online

sõnum 21.09.2009 21:16:08 vasta tsitaadiga

Kuna baasis on juba andmed kehvalt salvestatud (mitte date vormingus, vaid varchar), siis pead mysql'is samamoodi convertima nüüd selle stringi date väärtuseks ümber võrdlemiseks.
Kommentaarid: 85 loe/lisa Kasutajad arvavad:  :: 0 :: 2 :: 78
tagasi üles
vaata kasutaja infot saada privaatsõnum
Absona
Lõuapoolik
Lõuapoolik

liitunud: 17.09.2008




sõnum 21.09.2009 21:18:02 vasta tsitaadiga

Ennem kui andmebaasi asjad salvestatakse tuleb alati valideerida, et tulevikus ei peaks sellist jama tegema nagu nüüd. icon_smile.gif
_________________
Veebilehed, veebiprogrammeerimine, veebilahendused
Erinevad rakendused ja skriptid.
Kommentaarid: 11 loe/lisa Kasutajad arvavad:  :: 2 :: 0 :: 8
tagasi üles
vaata kasutaja infot saada privaatsõnum mine selle kasutaja kodulehele
mikk36
HV Guru
mikk36

liitunud: 21.02.2004



Online

sõnum 21.09.2009 21:21:57 vasta tsitaadiga

http://dev.mysql.com/doc/refman/5.0/en/using-date.html
http://guelphdad.wefixtech.co.uk/sqlhelp/varchartodate.shtml
Kommentaarid: 85 loe/lisa Kasutajad arvavad:  :: 0 :: 2 :: 78
tagasi üles
vaata kasutaja infot saada privaatsõnum
SiMka
HV kasutaja
SiMka

liitunud: 01.10.2005




sõnum 21.09.2009 21:26:15 vasta tsitaadiga

Absona kirjutas:
Ennem kui andmebaasi asjad salvestatakse tuleb alati valideerida, et tulevikus ei peaks sellist jama tegema nagu nüüd. icon_smile.gif


Oleks ise teinud, oleks teine asi, muudan kellegi "juba tehtud" skripti kasutuskõlblikumaks.

mikk36 kirjutas:
http://dev.mysql.com/doc/refman/5.0/en/using-date.html
http://guelphdad.wefixtech.co.uk/sqlhelp/varchartodate.shtml


Tänud lingi eest, andis probleemile lahenduse.
Kommentaarid: 15 loe/lisa Kasutajad arvavad:  :: 0 :: 0 :: 14
tagasi üles
vaata kasutaja infot saada privaatsõnum
matis
HV kasutaja
matis

liitunud: 12.04.2004




sõnum 25.09.2009 13:03:35 vasta tsitaadiga

tsitaat:

$date = date(d.".".m.".".Y); // Tänane kuupäev, näiteks 21.09.2009
$q = mysql_query("SELECT * FROM `list` WHERE `endDate` > '$date' AND `ID` = '$debateID'") or die(mysql_error()); // endDate on tabelis näiteks 12.10.2009


"select * from `list` where UNIX_TIMESAMP(str_to_date(`endDate`, '%d.%m.%Y')) > $date"

kus $date = time(); //aeg hetkel
või $date = mktime(0,0,0,09,21,1009);

_________________
https://www.e-abi.ee/ - Pangalingid, Smartposti, Post24 moodulid, Järelmaksumoodulid. Magento, Prestahop, Wordpress. Aktsepteerin Bitcoini!
Soovid lisada oma tooteid HinnaVaatlusesse? https://www.e-abi.ee/magento/kasulikud/product-exporter-and-multi-product-feed-generator-hinnavaatlus.html
Kommentaarid: 64 loe/lisa Kasutajad arvavad:  :: 1 :: 1 :: 60
tagasi üles
vaata kasutaja infot saada privaatsõnum
Le Inc
HV Guru
Le Inc

liitunud: 06.09.2002



Autoriseeritud ID-kaardiga

sõnum 26.09.2009 13:38:28 vasta tsitaadiga

Mina tegin kuupäevade ja kellaja kontrolli nii et digimuundasin aja formaadi numbriks. Php on see gregorian all. Siis on juba lihtne igatsugu võrdlusi teha. Php on nii mõnusam .. küsid korra baasist väärtuse ära ja siis mürad php edasi.
Kommentaarid: 56 loe/lisa Kasutajad arvavad:  :: 0 :: 0 :: 54
tagasi üles
vaata kasutaja infot saada privaatsõnum
näita postitusi alates eelmisest:   
uus teema   vasta Tarkvara »  Programmeerimine »  Kuupäevade võrdlemine (php & SQL)
[vaata eelmist teemat] [vaata järgmist teemat]
 lisa lemmikuks
näita foorumit:  
 ignoreeri teemat 
sa ei või postitada uusi teemasid siia foorumisse
sa ei või vastata selle foorumi teemadele
sa ei või muuta oma postitusi selles foorumis
sa ei või kustutada oma postitusi selles foorumis
sa ei või vastata küsitlustele selles foorumis
sa ei saa lisada manuseid selles foorumis
sa võid manuseid alla laadida selles foorumis



Hinnavaatlus ei vastuta foorumis tehtud postituste eest.