Solved

MySql Query rows for this year

Posted on 2014-12-21
9
51 Views
Last Modified: 2016-05-25
I have a query that i need to get only the rows that are for the current year.

The column that has the unix time is referrals.entered

here is the current query:

SELECT referrals.*, to_person.fname as to_fname, to_person.lname as to_lname, from_person.fname as from_fname, from_person.lname as from_lname FROM referrals LEFT JOIN person as from_person ON (from_person.ID = referrals.from_ID) LEFT JOIN person as to_person ON (to_person.ID = referrals.to_ID) LEFT JOIN chapter_relation as from_relation ON (from_person.ID = from_relation.person_ID) LEFT JOIN chapter_relation as to_relation ON (to_person.ID = to_relation.person_ID) WHERE from_relation.chapter_ID = to_relation.chapter_ID AND from_relation.chapter_ID = '$chapterid' ORDER BY referrals.entered DESC
0
Comment
Question by:jporter80
  • 4
  • 3
9 Comments
 
LVL 58

Expert Comment

by:Gary
ID: 40512250
There is nothing in your query where you filter on year so

WHERE
....
YEAR(referrals.entered)=2014
....

Open in new window

0
 
LVL 58

Expert Comment

by:Gary
ID: 40512252
Or did you mean for this to be a generic sql for whatever the current year is?

WHERE
....
YEAR(referrals.entered)=YEAR(CURDATE())
....

Open in new window

0
 

Accepted Solution

by:
jporter80 earned 0 total points
ID: 40512259
Well maybe i answered my own question... but i just did it this way unless you think it could be better:

$currentyear = date('Y');
$startyear = strtotime("01 January ".$currentyear);
$endyear = strtotime("31 December ".$currentyear);

$numberreferrals = mysqli_query($mysqliglobal,"SELECT referrals.*, to_person.fname as to_fname, to_person.lname as to_lname, from_person.fname as from_fname, from_person.lname as from_lname FROM referrals LEFT JOIN person as from_person ON (from_person.ID = referrals.from_ID) LEFT JOIN person as to_person ON (to_person.ID = referrals.to_ID) LEFT JOIN chapter_relation as from_relation ON (from_person.ID = from_relation.person_ID) LEFT JOIN chapter_relation as to_relation ON (to_person.ID = to_relation.person_ID) WHERE from_relation.chapter_ID = to_relation.chapter_ID AND from_relation.chapter_ID = '$chapterid' AND referrals.entered > $startyear AND referrals.entered < $endyear ORDER BY referrals.entered DESC");
0
Ransomware: The New Cyber Threat & How to Stop It

This infographic explains ransomware, type of malware that blocks access to your files or your systems and holds them hostage until a ransom is paid. It also examines the different types of ransomware and explains what you can do to thwart this sinister online threat.  

 
LVL 58

Expert Comment

by:Gary
ID: 40512263
I think it's easier going the sql route, and just pass in the year from php using
$year = date("Y");
...
WHERE
....
YEAR(referrals.entered)=$year
....

Open in new window



Doing a date > and date < is just wasted code.
Plus the way you have it it would be
year > 2014 and year < 2014 = nothing
0
 

Author Comment

by:jporter80
ID: 40512265
im using unix time so the variables declared before query are getting unix time of the beginning of the current year and the end of the current year. Now im querying everything in between with > or <
0
 
LVL 58

Expert Comment

by:Gary
ID: 40512268
Ahh true - thought you were querying against the year, still it would be easier and less code to just query on the year as exampled here http:#a40512263

edit.
Your code is still > than the 1st of Jan and < 31st Dec which means the 2nd Jan til the 30th Dec
Should >= and <=
0
 
LVL 9

Expert Comment

by:Brian Tao
ID: 40512269
Just a reminder: use >= and <= otherwise you'll miss the data from the first and the last day of the year!
0
 

Author Comment

by:jporter80
ID: 40512274
ahhh.. thanks for the catch
0

Featured Post

Free Tool: Postgres Monitoring System

A PHP and Perl based system to collect and display usage statistics from PostgreSQL databases.

One of a set of tools we are providing to everyone as a way of saying thank you for being a part of the community.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Suggested Solutions

Title # Comments Views Activity
What's wrong with this PDO query? 5 28
Wordpress Cron - Send XML Data to external server FTP 3 24
Help with PHP 13 27
PHP alternative to file_get_contents('php://input') 4 83
I imagine that there are some, like me, who require a way of getting currency exchange rates for implementation in web project from time to time, so I thought I would share a solution that I have developed for this purpose. It turns out that Yaho…
Load balancing is the method of dividing the total amount of work performed by one computer between two or more computers. Its aim is to get more work done in the same amount of time, ensuring that all the users get served faster.
The viewer will learn how to count occurrences of each item in an array.
The viewer will learn how to create and use a small PHP class to apply a watermark to an image. This video shows the viewer the setup for the PHP watermark as well as important coding language. Continue to Part 2 to learn the core code used in creat…

820 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question