The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.

NAME

Date::Range::Birth - range of birthday for an age

SYNOPSIS

  use Date::Range::Birth;

  # birthday for those who are 24 years old now
  my $range = Date::Range::Birth->new(24);

  # birthday for those who are 24 years old in 2001-01-01
  my $date   = Date::Simple->new(2001, 1, 1);
  my $range2 = Date::Range::Birth->new(24, $date);

  # birthday for those who are between 20 and 30 yeard old now
  my $range3 = Date::Range::Birth->new([ 20, 30 ]);

DESCRIPTION

Date::Range::Birth is a subclass of Date::Range, which provides a way to construct range of dates for birthday.

METHODS

new
  $range = Date::Range::Birth->new($age);
  $range = Date::Range::Birth->new($age, $date);
  $range = Date::Range::Birth->new([ $young, $old ]);
  $range = Date::Range::Birth->new([ $young, $old ], $date);

returns Date::Range::Birth object for birthday of the age. If $date (Date::Simple object) provided, returns range of birthday for those who are $age years old in $date. Default is today (now).

If the age is provided as array reference (like [ $young, $old ]), returns range of birthday for those who are between $young - $old years old. It may be handy for searching teenagers, etc.

Other methods are inherited from Date::Range. See Date::Range for details.

EXAMPLE

Your customer database schema:

  CREATE TABLE customer (
      name     varchar(64) NOT NULL,
      birthday date NOT NULL
  );

What you should do is to select name and birthday of the customers who are 2X years old (between 20 and 29).

  use DBI;
  use Date::Range::Birth;

  my $dbh = DBI->connect( ... );
  my $range = Date::Range::Birth->new([ 20, 29 ]);

  my $sth = $dbh->prepare(<<'SQL')
  SELECT name, birthday FROM customer WHERE birthday >= ? AND birthday <= ?
  SQL

  # Date::Simple overloads to 'yyyy-mm-dd'!
  $sth->execute($range->start, $range->end);

  while (my $data = $sth->fetchrow_arrayref) {
      print "name: $data->[0] birthday: $data->[1]\n";
  }
  $dbh->disconnect;

AUTHOR

Original idea by ikechin <ikebe@cpan.org>

Code implemented by Tatsuhiko Miyagawa <miyagawa@bulknews.net>

This library is free software; you can redistribute it and/or modify it under the same terms as Perl itself.

SEE ALSO

Date::Range, Date::Simple, Date::Calc