1
2
3
4
5
$ perl -E 'my @range = ( 20170701 ... 20170704 ); say for @range;'
20170701
20170702
20170703
20170704
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#! /usr/bin/perl
use strict;
use warnings;
use 5.020;
use Date::Range;
use Date::Simple qw( date );
my $range = Date::Range->new(
date('2000-02-25'),
date('2000-03-04'),
);
say for $range->dates;
__END__
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29
#!/usr/bin/perl use warnings; use strict; use DateTime; sub getDatetime { my $str = shift; my @a = split(/\./, $str); my $dt = DateTime->new( year => $a[2], month => $a[1], day => $a[0], time_zone => 'Europe/Berlin'); return $dt; } my $start = getDatetime("1.7.2017"); my $end = getDatetime("4.7.2017"); my $step = DateTime::Duration->new(days => 1); my @ergebnisliste = (); while ($start->epoch() <= $end->epoch()) { push(@ergebnisliste, $start->day() . "." . $start->month() . "." . $start->year()); $start->add($step); } for my $i (@ergebnisliste) { print "$i\n"; }
1 2 3 4 5 6 7 8 9
use Scaliger (); my $begin = Scaliger->new( date => '1.1.1899' ); my $end = Scaliger->new( date => '3.2.1905' ); foreach my $jd( $begin->jd .. $end->jd ){ my $sca = Scaliger->new( jd => $jd ); # julian days print "$sca\n"; # using to string feature }
while( $begin->jd <= $end->jd ){ $begin++ }
1 2 3 4 5 6 7 8
use Class::Date 'date'; my $date = date('2000-02-25'); while ($date <= '2000-03-04') { say $date; $date += '1D'; }
Guest Andi123Hintergrund der Frage ist, dass ich in einer Datenbank unzählige Einträge eines bestimmten Zeitraumes habe und schnell prüfen möchte, ob für jeden Tag in diesem Zeitraum auch ein Eintrag vorhanden ist.
select tb1.datum from tabelle tb1 where not exists (select 1 from tabelle where datum-1 = tb1.datum and rownum = 1)
2017-07-06T12:59:45 MuffiDas hier müsst in Oracle alle Datumse anzeigen, die keinen direkten Vorgänger haben.
Code: (dl )select tb1.datum from tabelle tb1 where not exists (select 1 from tabelle where datum-1 = tb1.datum and rownum = 1)