Welcome to WebmasterWorld Guest from 54.211.101.8

Forum Moderators: open

CURRENT_DATE() with DATETIME

How do grab entries from yesterday...

   
5:17 pm on Jan 26, 2006 (gmt 0)

WebmasterWorld Senior Member 10+ Year Member



Hey everyone,

I'm still fairly new to MySQL's DATETIME.

I have a table that records conversions for the day. With the entries it records the DATETIME of the conversion with the NOW() function. The date looks like this : 2006-01-26 10:43:51

What is the SQL for grabbing entries from yesterday?
Currently I am trying:
SELECT * FROM conversions WHERE date = CURRENT_DATE() - 1

The SQL query returns nothing with no error even though there are conversions yesterday.

Can anyone help?

Thanks in advance for your replies!

Wes

5:49 pm on Jan 26, 2006 (gmt 0)

WebmasterWorld Senior Member demaestro is a WebmasterWorld Top Contributor of All Time 10+ Year Member



You want

SELECT * FROM conversions WHERE date = CURRENT_DATE() - INTERVAL 1 DAY;

There are other arguments you can do with this, some examples:

SELECT now() + INTERVAL 1 SECOND;

SELECT now() - INTERVAL 1 SECOND;

SELECT now() - INTERVAL 1 MONTH;

SELECT now() - INTERVAL 1 YEAR;

I will sticky you the mysql help page for this, not sure the forum moderator will want the link posted

6:52 pm on Jan 26, 2006 (gmt 0)

WebmasterWorld Administrator coopster is a WebmasterWorld Top Contributor of All Time 10+ Year Member



MySQL is an authoritative site so it is OK to link there.

[dev.mysql.com...]

7:16 pm on Jan 26, 2006 (gmt 0)

WebmasterWorld Senior Member 10+ Year Member



Thank you for your replies and link to the MySQL page on Date/Timestamp.

Using SELECT * FROM conversions WHERE date = CURRENT_DATE() - INTERVAL 1 DAY; does not work :S

Just like the other SQL query I mentioned, it says there are no entries from yesterday. Should I work around it using the PGP date function? I know how I can do that but I wanted to get the MySQL date working because its something new ;)

Any other suggestions?

Thanks again!

Wes

8:56 pm on Jan 26, 2006 (gmt 0)

WebmasterWorld Senior Member demaestro is a WebmasterWorld Top Contributor of All Time 10+ Year Member



The problem may be the fact that there are times on your dat so it doesn't match yeterday.

Try this

SELECT
*
FROM
conversions
WHERE
date >= CURRENT_DATE():00:00:00 - INTERVAL 1 DAY
and date <= CURRENT_DATE():12:59:59 - INTERVAL 1 DAY;

The syntax may be off but the basic idea is you want to see if your dateTime falls in the time range for yesterday. There may be a CURRENT_DATE().earliestTime() or CURRENT_DATE().latestTime() funtion that will return the latet and erliest times of a day but I am not sure.

9:16 pm on Jan 26, 2006 (gmt 0)

WebmasterWorld Senior Member 10+ Year Member



Thank you Demaestro.

I will try that out. I just got it working but I cheaped out and made two cells, date and time. It's working now but I'm having to use an extra cell.

10:50 pm on Jan 26, 2006 (gmt 0)

WebmasterWorld Senior Member demaestro is a WebmasterWorld Top Contributor of All Time 10+ Year Member



It is cheap but it'll work.

It will suck for ordering by date and time though if they are seperate fields. It will also make comparisons harder if you split them. Like when you want to query things that come before or after something else based on date and time. Because if it has to consider the time then it is a little bit of a hassle. You have to make sure the date fields are equal, then you can check if the time is before or after a time you need to compare against.

Just a heads up of a few pit falls of splitting your datetime field into 2 seperate fields.

1:46 pm on Jan 27, 2006 (gmt 0)

WebmasterWorld Senior Member 10+ Year Member



Yeah I understand that ;)

I think they only ordering I will have to do will be simple ordering so it should be alright using the two seperate fields

Thanks again for your help!

7:45 pm on Jan 27, 2006 (gmt 0)

WebmasterWorld Senior Member demaestro is a WebmasterWorld Top Contributor of All Time 10+ Year Member



No problem. I am happy to help with any SQL questions the geek in me loves it.
8:20 pm on Jan 27, 2010 (gmt 0)

5+ Year Member



Today:
SELECT * FROM conversions WHERE DAY( date ) = EXTRACT(DAY FROM NOW() )

Yesterday:
SELECT * FROM conversions WHERE DAY( date ) = EXTRACT(DAY FROM (NOW() - INTERVAL
1 DAY ) )

 

Featured Threads

My Threads

Hot Threads This Week

Hot Threads This Month