/ Forside / Teknologi / Udvikling / SQL / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
SQL
#NavnPoint
pmbruun 1704
niller 962
fehaar 730
Interkril.. 701
ellebye 510
pawel 510
rpje 405
pete 350
gibson 320
10  smorch 260
MySQL find date
Fra : Harald


Dato : 24-03-06 09:26

Hej

Jeg bruger MySQL 4.0 og har en tabel med en DateTime felt (Dato), jeg vil
gerne finde alle de poster hvor Dato er lig dags dato, jeg prøver dette:
SELECT * FROM `mintabel` WHERE date(dato)=date()

men jeg får en syntax fejl, syntes ikke jeg kan finde noget i manualen der
virker.

/HK



 
 
Harald (24-03-2006)
Kommentar
Fra : Harald


Dato : 24-03-06 10:00

"Harald" <nomail@noname.dk> skrev i en meddelelse
news:4423ad0b$0$84036$edfadb0f@dtext01.news.tele.dk...
> Hej
>
> Jeg bruger MySQL 4.0 og har en tabel med en DateTime felt (Dato), jeg vil
> gerne finde alle de poster hvor Dato er lig dags dato, jeg prøver dette:
> SELECT * FROM `mintabel` WHERE date(dato)=date()
>
> men jeg får en syntax fejl, syntes ikke jeg kan finde noget i manualen der
> virker.

Nå date er først med fra MySQL 4.1, dette virker:

SELECT *
FROM `mintabel`
WHERE year( dato ) = year( now( ) )
AND month( dato ) = month( now( ) )
AND DAYOFMONTH( dato ) = DAYOFMONTH( now( ) )

men findes der ikke en lettere/kortere metode?

/HK



Michael Zedeler (24-03-2006)
Kommentar
Fra : Michael Zedeler


Dato : 24-03-06 14:23

Harald wrote:
> "Harald" <nomail@noname.dk> skrev i en meddelelse
> news:4423ad0b$0$84036$edfadb0f@dtext01.news.tele.dk...
>
>>Jeg bruger MySQL 4.0 og har en tabel med en DateTime felt (Dato), jeg vil
>>gerne finde alle de poster hvor Dato er lig dags dato, jeg prøver dette:
>>SELECT * FROM `mintabel` WHERE date(dato)=date()
>>
>>men jeg får en syntax fejl, syntes ikke jeg kan finde noget i manualen der
>>virker.
>
> Nå date er først med fra MySQL 4.1, dette virker:
>
> SELECT *
> FROM `mintabel`
> WHERE year( dato ) = year( now( ) )
> AND month( dato ) = month( now( ) )
> AND DAYOFMONTH( dato ) = DAYOFMONTH( now( ) )
>
> men findes der ikke en lettere/kortere metode?

Hvad med

SELECT *
FROM <mintabel>
WHERE date(dato) = date(now())

?

Se også

http://dev.mysql.com/doc/refman/5.0/en/date-and-time-functions.html

Mvh. Michael.
--
Which is more dangerous? TV guided missiles or TV guided families?
Visit my home page at http://michael.zedeler.dk/
Get my vcard at http://michael.zedeler.dk/vcard.vcf

Peter Brodersen (24-03-2006)
Kommentar
Fra : Peter Brodersen


Dato : 24-03-06 14:25

On Fri, 24 Mar 2006 14:23:00 +0100, Michael Zedeler
<michael@zedeler.dk> wrote:

>>>Jeg bruger MySQL 4.0 og har en tabel med en DateTime felt (Dato), jeg vil

>> Nå date er først med fra MySQL 4.1, dette virker:

>Hvad med
>
>SELECT *
>FROM <mintabel>
>WHERE date(dato) = date(now())

Date er først med fra MySQL 4.1.
--
- Peter Brodersen
Find dig selv: http://map.ter.dk/

Martin (24-03-2006)
Kommentar
Fra : Martin


Dato : 24-03-06 14:27

Peter Brodersen wrote:
> On Fri, 24 Mar 2006 14:23:00 +0100, Michael Zedeler
> <michael@zedeler.dk> wrote:
>
>
>>>>Jeg bruger MySQL 4.0 og har en tabel med en DateTime felt (Dato), jeg vil
>
>
>>>Nå date er først med fra MySQL 4.1, dette virker:
>
>
>>Hvad med
>>
>>SELECT *
>
>>FROM <mintabel>
>
>>WHERE date(dato) = date(now())

noget i stil med
WHERE UNIX_TIMESTAMP(dato) = UNIX_TIMESTAMP(now())

?


>
>
> Date er først med fra MySQL 4.1.

Martin (24-03-2006)
Kommentar
Fra : Martin


Dato : 24-03-06 14:28

Martin wrote:
> Peter Brodersen wrote:
>
>> On Fri, 24 Mar 2006 14:23:00 +0100, Michael Zedeler
>> <michael@zedeler.dk> wrote:
>>
>>
>>>>> Jeg bruger MySQL 4.0 og har en tabel med en DateTime felt (Dato),
>>>>> jeg vil
>>
>>
>>
>>>> Nå date er først med fra MySQL 4.1, dette virker:
>>
>>
>>
>>> Hvad med
>>>
>>> SELECT *
>>
>>
>>> FROM <mintabel>
>>
>>
>>> WHERE date(dato) = date(now())
>
>
> noget i stil med
> WHERE UNIX_TIMESTAMP(dato) = UNIX_TIMESTAMP(now())
>
> ?
>
>
>>
>>
>> Date er først med fra MySQL 4.1.

PS: Få da lige opdateret MySQL
MySQL under 4.1 er godt nok fejlbehæftet - hvis den er hostet udenbys,
så få da lige fat i enten en ny host, eller find en ny host :)

Harald (24-03-2006)
Kommentar
Fra : Harald


Dato : 24-03-06 18:56

"Martin" <maa@scandesigns.dk> skrev i en meddelelse
news:4423f3d4$0$15791$14726298@news.sunsite.dk...
> Martin wrote:
>> Peter Brodersen wrote:
>>
>>> On Fri, 24 Mar 2006 14:23:00 +0100, Michael Zedeler
>>> <michael@zedeler.dk> wrote:
>>>
>>>
>>>>>> Jeg bruger MySQL 4.0 og har en tabel med en DateTime felt (Dato), jeg
>>>>>> vil
>>>
>>>
>>>
>>>>> Nå date er først med fra MySQL 4.1, dette virker:
>>>
>>>
>>>
>>>> Hvad med
>>>>
>>>> SELECT *
>>>
>>>
>>>> FROM <mintabel>
>>>
>>>
>>>> WHERE date(dato) = date(now())
>>
>>
>> noget i stil med
>> WHERE UNIX_TIMESTAMP(dato) = UNIX_TIMESTAMP(now())
>>
>> ?
>>
>>
>>>
>>>
>>> Date er først med fra MySQL 4.1.
>
> PS: Få da lige opdateret MySQL
> MySQL under 4.1 er godt nok fejlbehæftet - hvis den er hostet udenbys, så
> få da lige fat i enten en ny host, eller find en ny host :)

Jeg har egen server men desværre kan jeg ikke lige uden vidrer opdatere da
nogle af de programmer jeg bruger ikke understøtter MySQL over 4.0.26. Men
tak for forslagene det vil jeg prøve.

/HK



Tom Jensen (24-03-2006)
Kommentar
Fra : Tom Jensen


Dato : 24-03-06 22:00

Harald skrev:
> "Martin" <maa@scandesigns.dk> skrev i en meddelelse
> news:4423f3d4$0$15791$14726298@news.sunsite.dk...
>
>>Martin wrote:
>>
>>>Peter Brodersen wrote:
>>>
>>>
>>>>On Fri, 24 Mar 2006 14:23:00 +0100, Michael Zedeler
>>>><michael@zedeler.dk> wrote:
>>>>
>>>>
>>>>
>>>>>>>Jeg bruger MySQL 4.0 og har en tabel med en DateTime felt (Dato), jeg
>>>>>>>vil
>>>>
>>>>
>>>>
>>>>>>Nå date er først med fra MySQL 4.1, dette virker:
>>>>
>>>>
>>>>
>>>>>Hvad med
>>>>>
>>>>>SELECT *
>>>>
>>>>
>>>>>FROM <mintabel>
>>>>
>>>>
>>>>>WHERE date(dato) = date(now())
>>>
>>>
>>>noget i stil med
>>>WHERE UNIX_TIMESTAMP(dato) = UNIX_TIMESTAMP(now())
>>>
>>>?
>>>
>>>
>>>
>>>>
>>>>Date er først med fra MySQL 4.1.
>>
>>PS: Få da lige opdateret MySQL
>>MySQL under 4.1 er godt nok fejlbehæftet - hvis den er hostet udenbys, så
>>få da lige fat i enten en ny host, eller find en ny host :)
>
>
> Jeg har egen server men desværre kan jeg ikke lige uden vidrer opdatere da
> nogle af de programmer jeg bruger ikke understøtter MySQL over 4.0.26. Men
> tak for forslagene det vil jeg prøve.
>
> /HK
>
>
Har du prøvet curdate(), det virker for mig på en 4.1.12

Med venlig hilsen

Tom Jensen
- Læs mere om asp og databaser her -
www.ffsoft.dk

Harald (24-03-2006)
Kommentar
Fra : Harald


Dato : 24-03-06 22:56

"Tom Jensen" <xx@xx.xx> skrev i en meddelelse
news:1228namhrqjftfe@corp.supernews.com...

<klip klip>

> Har du prøvet curdate(), det virker for mig på en 4.1.12

Ja det giver en syntax fejl

/HK



Michael Zedeler (24-03-2006)
Kommentar
Fra : Michael Zedeler


Dato : 24-03-06 23:20

Peter Brodersen wrote:
>>Hvad med
>>
>>SELECT *
>
>>FROM <mintabel>
>
>>WHERE date(dato) = date(now())
>
> Date er først med fra MySQL 4.1.

Suk**2.

M.
--
Which is more dangerous? TV guided missiles or TV guided families?
Visit my home page at http://michael.zedeler.dk/
Get my vcard at http://michael.zedeler.dk/vcard.vcf

Peter Brodersen (25-03-2006)
Kommentar
Fra : Peter Brodersen


Dato : 25-03-06 11:27

On Fri, 24 Mar 2006 23:20:29 +0100, Michael Zedeler
<michael@zedeler.dk> wrote:

>> Date er først med fra MySQL 4.1.
>
>Suk**2.

Den gamle/grimme løsning er fx LEFT(datofelt,10) - rent
performancemæssigt tror jeg ikke, der er den store forskel, idet evt.
indexes alligevel ikke benyttes, når man ikke refererer til felterne
direkte.

--
- Peter Brodersen
Find dig selv: http://map.ter.dk/

Martin Christensen (25-03-2006)
Kommentar
Fra : Martin Christensen


Dato : 25-03-06 00:53

-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

Michael Zedeler <michael@zedeler.dk> writes:

> Hvad med
>
> SELECT *
> FROM <mintabel>
> WHERE date(dato) = date(now())

Nu vi er ved disse forslag, hvor der søges på afledte kolonneværdier
(her date(dato)) - og altså ikke direkte, pålydende kolonneværdier -
er det nok værd at bemærke, at DBMS'er så som regel ikke kan hitte ud
af at bruge et indeks på denne kolonne. Jeg går ud fra, at dette også
er tilfældet med MySQL, men det kan naturligvis checkes efter i query
planen.

Det er i øvrigt slet ikke sikkert, at denne kommentar er relevant for
problemet.

Martin
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.1 (GNU/Linux)
Comment: Using Mailcrypt+GnuPG <http://www.gnupg.org>

iEYEARECAAYFAkQkhm0ACgkQYu1fMmOQldWICACcCMg96z+OCTlN3+3UwAE2H/R2
MmoAniePQEmJ5R2wOrSPySi7mVhBqhPZ
=cm9f
-----END PGP SIGNATURE-----

Kasper Johansen (24-03-2006)
Kommentar
Fra : Kasper Johansen


Dato : 24-03-06 23:27

Harald wrote:
> Hej
>
> Jeg bruger MySQL 4.0 og har en tabel med en DateTime felt (Dato), jeg vil
> gerne finde alle de poster hvor Dato er lig dags dato, jeg prøver dette:
> SELECT * FROM `mintabel` WHERE date(dato)=date()

Der er en dato-funktion i MySQL, som minder rigtig meget om
date()-funktionen i PHP (hvis du kender det). Den hedder
DATE_FORMAT(String date, String format).

Vær opmærksom på at denne funktion kun kan bruges til gyldige timestamps
(typiske MySQL-dato-felter). Hvis du vil bruge en lignende funktion til
dit Unix-timestamp, så skal du bruge FROM_UNIXTIME(String timestamp,
String format).


Du kan bruge det hele således:

<SQL>
SELECT
*

FROM
table

WHERE
DATE_FORMAT(dato_felt, '%m %y') = FROM_UNIXTIME('$unixtimestamp',
'%m %y');
</SQL>



Den nuværende tid til begge formater kan findes via. følgende funktioner:

NOW() - Bruges til MySQL's egne dato-felter.
UNIX_TIMESTAMP() - Bruges til nuværende unix-timestamp.


Vær opmærksom på, at der er mange flere brugsmetoder til begge
funktioner (altså format-strengen). Du kan f.eks. skrive %d for dato og
%u for uge. Læs mere på MySQL's egen hjemmeside.



--
Med venlig hilsen
Kasper Johansen

Søg
Reklame
Statistik
Spørgsmål : 177580
Tips : 31968
Nyheder : 719565
Indlæg : 6409079
Brugere : 218888

Månedens bedste
Årets bedste
Sidste års bedste