Re: RFC:: DateTime::Span::Common
[email protected] (Rick Measham)
| Newsgroups | perl.datetime |
|---|---|
| Message-ID | <[email protected]> |
Zefram wrote: > Terrence Brannon wrote: >> 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. > > BETWEEN, then, is not the right way to express an open or half-open > interval. If you're going to add anything to DT::Span, add a method that > generates the correct SQL expression, taking account of the openness of > each end of the interval. > > -zefram Sounds like a job for DateTime::Format::MySQL .. $span = DateTime::Span->from_datetimes( start => $dt1, end => $dt2 ); print DateTime::Format::MySQL->format_span( $span, 'colname' ); # colname >= '2009-04-08 23:22:00' AND colname <= '2009-04-09 23:22:00' $span = DateTime::Span->from_datetimes( start => $dt1, before => $dt2 ); # colname >= '2009-04-08 23:22:00' AND colname < '2009-04-09 23:22:00' $span = DateTime::Span->from_datetimes( after => $dt1, before => $dt2 ); # colname > '2009-04-08 23:22:00' AND colname < '2009-04-09 23:22:00' $span = DateTime::Span->from_datetimes( start => $dt1 ); # colname >= '2009-04-08 23:22:00' And could be extended to SpanSets too: $spanset = DateTime::SpanSet->from_spans( spans => [ $dt_span, $dt_span ] ); # (colname >= '2009-04-08 23:22:00' AND colname < '2009-04-09 23:22:00') OR (colname >= '2009-05-08 23:22:00' AND colname < '2009-05-09 23:22:00') (Of course, this couldn't be expected to work on infinite or even large spansets) Just my $0.02. Cheers! Rick Measham -- Message protected for iSite by MailGuard: e-mail anti-virus, anti-spam and content filtering. http://www.mailguard.com.au