On Tue, Mar 31, 2009 at 2:17 PM, Zefram <zef...@fysh.org> wrote:
> Terrence Brannon wrote:
>>Intuitively, it would seem that specifying the 'before' of a datetime
>>span using the end option of the ->from_datetimes() constructor would
>>yield a range that is 1 second (1 nanosecond?) earlier than the actual
>>date supplied.
>
> I would not find that intuitive.  Your 1 second or 1 nanosecond would
> be a completely arbitrary mutation of the supplied data.

Yes, I would determine that aribtrary 1 second or nanosecond based on
the data in my database tables. a MySQL BETWEEN clause includes its
endpoints.

If I want all data for a certain date, my BETWEEN clause must be from
00:00::00 to 23:59:59 assuming a datetime column.

Using the start and end dates supplied by Datetime::Span would lead to
overlapping SQL query results on successive days, hence the following
module:

    use DateTime::Span::Common;
     # ideal for DATETIME columns
    my $x = DateTime::Span::Common->new(shave =>  [seconds => 1]);

    # not sure what this would be practical for
    my $y = DateTime::Span::Common->new(shave =>  [nanoseconds => 1]);

    my @dto = $x->today;
    @dto = $x->yesterday;
    @dto = $x->this_week;
    @dto = $x->last_week;
    @dto = $x->this_month;
    @dto = $x->last_month;
    @dto = $x->year_to_date;
    @dto = $x->last_year;

    my $sth = $dbh->prepare('SELECT * FROM table WHERE order_date
BETWEEN ? AND ?');
    $sth->execute(@dto);

Reply via email to