Tietokantataulukossa olen tehnyt päivämäärämääritteen, mutta olen asettanut sen tyypiksi varchar eikä Date. Kysymykseni kuuluu: voinko silti verrata tällaisia päivämääriä SQL-kyselyssä?

Tietokannani päivämäärät tallennetaan tässä muodossa:

pp / kk / vvvv hh: mm: ss

Minun on tehtävä PHP: ssä SQL-kysely, joka näyttää tältä:

SELECT * FROM DBtable WHERE DBname="$name" AND date>="31/01/2015" AND date<="31/09/2015"; 

”date” näyttää tältä: 07/08/2015 15:15:02

Arvostan esimerkkiä siitä, miten tehdäksesi tämän.

Kommentit

  • Muokkaa muokkaa ja merkitse kysymyksesi tunnisteella ja kerro meille, mitä tietokantatuotetta käytät (esim. MySQL ja versio). Lisäksi, koska on aika paljon parempi tallentaa päivämäärät dates kuin merkkijonoina, eikö jostain syystä voi muuttaa taulukon määritelmää nyt? Vai pyydätkö myös apua sen tekemiseen?
  • Pystytkö muuttamaan päivämäärämääritteen päivämääräksi? Päivämäärien säilyttäminen varcharina on ongelmallista. Törmäät tilanteisiin, joissa tallennetaan tietoja, jotka eivät ole kelvollisia. Muunnat myös jatkuvasti päivämäärään ja siitä alkaen.

Vastaa

Käyttämästäsi tietokannasta riippuen sinun pitäisi pystyä heittämään merkkijono päivämäärään ja tekemään sitten vertailusi.

ts SQL-palvelimessa

cast(date as datetime) >= "20150131" ... 

Siitä huolimatta suosittelen yleensä päivämäärän tallentamista päivämääränä, jos se on mahdollista, ja jos joudut käyttämään merkkijonoja, On parasta käyttää standardoitua muotoa

ts "YYYY-mm-dd" tai jopa parempi "YYYYmmdd" "mm/dd/YYYY" -kohdan sijaan, joka esimerkiksi voidaan helposti sekoittaa "dd/mm/YYYY", joka on yleistä monissa kulttuureissa. Katso tämä blogiviesti: Väärät tavat potkia: väärä käsittely päivämäärä- / alue-kyselyillä

Kommentit

  • ja se ' suositteli yleensä päivämäärille normaalia fromatia, kuten 'YYYY-mm-dd' tai vielä parempaa 'YYYYmmdd' eikä 'mm/dd/YYYY', joka on epäselvä, ja SQL-Serverin tulkinta riippuu paikallisista asetuksista.
  • @ypercube, Hyväksytty , päivitetty.

Vastaa

Kysymys ”Mitä tietokantaa käytät?”

Jokaisella RDBMS: llä on oma tapa käsitellä ongelmaa.

Jos MySQL käyttää str_to_date:

https://dev.mysql.com/doc/refman/5.1/en/date-and-time-functions.html#function_str-to-date

Tämä muuttaa varcharin päivämääräksi ja mahdollistaa päivämäärän lajittelun oikein. Päivämäärän lajitteleminen varchar-tietotyypiksi johtaa odottamattomaan toimintaan.

Vastaa

Sähköpostiosoitettasi ei julkaista. Pakolliset kentät on merkitty *