----- Original Message ----- 
From: "James Keeline"
> --- Bob <[EMAIL PROTECTED]> wrote:
> 
>> The following is working, but it's the first time I've used a table join, so
>> I may have it all wrong.
>> 
>> CREATE TABLE `familyhistory` (
>>   `msg_id` bigint(14) unsigned NOT NULL default '0',
>>   `name` varchar(50) NOT NULL default '',
>>   `family` varchar(50) NOT NULL default '',
>>   `message` text NOT NULL,
>>   PRIMARY KEY (`msg_id`),
>> ) TYPE=MyISAM;
>> 
>> CREATE TABLE `familyreplies` (
>>   `reply_id` bigint(14) unsigned NOT NULL default '0',
>>   `reply_date` bigint(14) unsigned NOT NULL default '0',
>>   `reply_name` varchar(50) NOT NULL default '',
>>   `reply_message` text NOT NULL,
>>   PRIMARY KEY (`reply_id`),
>> ) TYPE=MyISAM;
>> 
>> My query statement:
>> $sql =
>> "
>>   SELECT *,
>>   DATE_FORMAT(msg_id,'%W %D %M %Y at %l:%i %p') AS msgdate
>>   FROM familyhistory
>>   LEFT JOIN familyreplies ON msg_id = reply_id
>>   ORDER BY msg_id DESC
>>   LIMIT $pageoffset, $maxperpage
>> ";
>> 
>> msg_id, reply_id and reply_date are TIMESTAMPs.
>> There are no conflicting names in either table, so I haven't used (table dot
>> var) format.
>> 
>> How can I include this in my query:
>> DATE_FORMAT(reply_date,'%W %D %M %Y at %l:%i %p') AS reply_date
>> for the LEFT JOIN?
>> 
>> I read that it's more efficient to let MySql do the work, and not to pull the
>> data and format it yourself.
>> Thanks, Bob.
> 
> Your data type for reply_date is an integer.  I guess you intend to store the
> number of seconds since the epoch (ie 1 Jan 1970 00:00:00)?  This is also 
> known
> as unixtime in MySQL and there is a function called from_unixtime()
> 
> http://dev.mysql.com/doc/refman/5.1/en/date-and-time-functions.html#function_from-unixtime
> 
> which will convert the integer value to a date string.
> 
> For my money I'd use a datetime datatype because it allows a full range of
> dates from the year 1000 to 9999 (ie must be 4 digits) and it works more 
> easily
> with date_format() and other date-time functions in MySQL.
> 
> You can always convert to unixtime if you need to do a comparison for a post
> 1969 date.


Hi James,
The msg_id, reply_id and reply_date where in the format (20080129173937) and 
DATE_FORMAT() is working fine. I have set them all to DATETIME (2008-02-24 
19:46:30) now though, as you recommend.

The 1st DATE_FORMAT() is working fine.
My trouble is when I try to add the 2nd DATE_FORMAT(): 
No matter where I add it, the query fails. Tried it in different places etc.

$sql =
"
  SELECT *,
  DATE_FORMAT(msg_id,'%W %D %M %Y at %l:%i %p') AS msgdate
  FROM familyhistory

  LEFT JOIN familyreplies ON msg_id = reply_id
  DATE_FORMAT(reply_date,'%W %D %M %Y at %l:%i %p') AS myreplydate

  ORDER BY msg_id DESC
  LIMIT $pageoffset, $maxperpage
";

If I take the 2nd DATE_FORMAT() out, it excepts the query, but obviously the 
date isn't formatted.
Is there a comma or something missing from the 2nd DATE_FORMAT() for the LEFT 
JOIN, or have I got it in the wrong place?
Regards, Bob.


Reply via email to