[ale] Calculate Midnight in Perl

Christopher Fowler cfowler at outpostsentinel.com
Fri Jul 7 08:35:11 EDT 2006


On Fri, 2006-07-07 at 06:45, Jerry Yu wrote:
> if it is billing-type application, it'd be safer to run it at 00:01am
> and calculate yesterday's DATE to use in your SQL.

That is a great idea.  Never thought about that.   I typically run them
at 23:57 so that I can get the correct day.  This is not billing it is a
report on what users accessed what consoles and when they accessed those
consoles.  I have a similar report that tells me what remote device(s)
connected via PPP and how long they were connected.  Typically they only
connect for about a minute+.  This gives them enough time to deliver
their alarms.
  

> 
> On 7/6/06, Christopher Fowler < cfowler at outpostsentinel.com> wrote:
>         On Thu, 2006-07-06 at 12:37 -0400, James Sumners wrote:
>         > Why not just `SELECT * FROM table WHERE date_col =
>         CURDATE();`? (If
>         > you are using MySQL. I assume other DBs have the same sort
>         of
>         > functionality.) 
>         
>         Is that midnight?  Or does CURDATE() imply today only?  I want
>         to run
>         the report at 11:59pm and only get rows for that day.
>         
>         >
>         >
>         > On 7/6/06, Christopher Fowler <cfowler at outpostsentinel.com>
>         wrote:
>         > > I need to calculate midnight in perl so that I can do a
>         select on a
>         > > table and just get the current day's entries.  Here is how
>         I did it.
>         > >
>         > > --- [ Cut Here ] --------------
>         > > #!/usr/bin/perl
>         > >
>         > > use POSIX;
>         > > use strict;
>         > >
>         > > sub midnight {
>         > >         my $t = shift;
>         > >         $t = ($t ? $t : time()); 
>         > >         my
>         (undef,undef,undef,$mday,$mon,$year,$wday,$yday,$isdst) =
>         > >             localtime($t);
>         > >         my $ti = POSIX::mktime(0, 0, 0, $mday, $mon,
>         $year, 0, 0 ,0);
>         > >         return $ti; 
>         > >
>         > > }
>         > >
>         > > my $ti = midnight(time());
>         > > print POSIX::ctime($ti);
>         > > --- [ Cut Here ] --------------
>         > >
>         > > Output:
>         > > --- [ Cut Here ] -------------- 
>         > > [cfowler at shuttle ~]$ ./midnight.pl
>         > > Thu Jul  6 01:00:00 2006
>         > > --- [ Cut Here ] --------------
>         > >
>         > > Is it saying that 1am is the time since I'm on EDT now?
>         > > I was expecting 00:00:00 
>         > >
>         > >
>         > > _______________________________________________
>         > > Ale mailing list
>         > > Ale at ale.org
>         > > http://www.ale.org/mailman/listinfo/ale
>         > >
>         >
>         >
>         
>         _______________________________________________
>         Ale mailing list
>         Ale at ale.org
>         http://www.ale.org/mailman/listinfo/ale
> 
> 
> 
> ______________________________________________________________________
> 
> _______________________________________________
> Ale mailing list
> Ale at ale.org
> http://www.ale.org/mailman/listinfo/ale




More information about the Ale mailing list