|
| 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
| |
|
|