Wat moet er veranderen dat hier automatisch de datum van vandaag komt te staan.

FROM
readings v WHERE time>= '2015-09-21 00:01:00.000000' and time <= '2015-09-21 23:59:00.000000'

(De tabel = time type=timestamp standaardwaarde=CURRENT_TIMESTAMP)

Nu moet ik als ik de database uitlees elke keer de datum handmatig invoeren.
Mag ook dmv invul formulier
NOW()
2015-09-21 24:00:00
moet dit niet '2015-09-22 00:00:00 zijn.

Een tijd is volgens mij nooit als 24:00 geschreven

Jan
Aangepast , maar daar ging het eigenlijk niet om.
Met NOW() alleen kom ik er niet verder mee.

Ik zal iets moeten doen met variable of zo of met formulier.
Dacht idd iets met NOW() alleen krijg de syntax niet goed.

SELECT
v.id,time,laag_tarief
v.hoog_tarief - IFNULL((SELECT vg.`hoog_tarief` FROM readings vg WHERE vg.id = (v.id - 1)),0) AS diff_hoog

FROM
readings v WHERE time=NOW())

Werkt niet
NOW() geeft de huidge datum + tijd.

ik denk dat als je alles van vandaag zoekt, je moet gebruiken

WHERE time > CURRENT_DATE

Dat zegt dus : where time > '2015-09-22'

en '2015-09-22 17:24' is inderdaad groter dan dat.

In dit geval ga ik ervanuit dat er geen records zijn met de datum van morgen, dus hoeft er geen "AND time < datum vanmorgen" bij hoeft
Werkt dit niet voor jou?

WHERE FROM_UNIXTIME(`time` , '%Y-%m-%d' ) = CURDATE()
Kijk daar is de verlossende oplossing en zo voor de hand, was er zo dichtbij alleen als je de syntax iets fout hebt doet het niks.
Bedankt kan ik weer iets verder.
Of mogelijk makkelijker, als je alle records wilt selecteren waarbij de "time" waarden betrekking hebben op de huidige dag:

WHERE DATE(time) = CURRENT_DATE()

(en als "time" van het type datetime is is dit een (zeer) slecht gekozen naam imo)
"time" is al een slechte keuze, omdat het eigenlijk een gereserveerd woord is. Al maakt Mysql daar een uitzondering voor tov de sql standaard.

@Thomas.

nadeel van DATE(time) is, dat je eerst een bewerking doet op alle records in de kolom time en pas daarna kunt kijken of het record ergens aan voldoet.

Als je 100.000 records hebt, dan moet je dus 100.000 bewerkingen doen voor je kunt vergelijken.

Met time > current_date kun je de waarde zelf vergelijken en met wat geluk kan Mysql dan ook een index gebruiken.



[size=xsmall]Toevoeging op 22/09/2015 17:41:01:[/size]

@Jan:
de unix_timestamp is het aantal seconden sinds 1970

een integer dus.
De timestamp van Mysql is iets anders
@Ivo, fair enough.

Je zou ook voor een "half open domein" kunnen gaan( [a, b>, oftewel van-en-met tot-en-zonder ):

WHERE '2015-09-22 00:00:00' <= time AND time < '2015-09-23 00:00:00'

Of een BETWEEN als je dat leuker vindt.
FROM
readings v WHERE time> CURRENT_DATE

Dit doet nu voor wat het moet doen.
Ik ga er een formulier aan hangen en dan kan ik een datum vragen evt met bepaalde tijd of tussen bepaalde tijd.
Bedankt alvast

Reageren