SELECT * FROM ACS.USERS WHERE group_name = 'Full Network Access' AND update_timestamp > sysdate-24/24
####
SELECT user_id FROM ACS.USERS WHERE group_name = 'Full Network Access' AND TO_CHAR(update_timestamp) LIKE '15-JUN-2010%'
####
select * from users where group_name = 'Full Network Access' and update_timestamp like sysdate
select * from users where group_name = 'Full Network Access' and update_timestamp like '14-JUN-10'
####
#!/usr/local/perl510/bin/perl
use feature ":5.10"; # Use all new features in Perl 5.10
use strict; use warnings; use Data::Dumper;
use FindBin; use Getopt::Long; use IO::File;
use DBIx::Simple;
my $DEBUG = 1;
my $TEST = 0;
my $TEST_TO_DATE = 0;
my %db = (
cfg_file => '.inet_audit.db.cfg',
username => undef,
password => undef,
);
my @full_network_access; # From CsicoSecure (via Oracle)
#//////////////////////////////////////////////////////////////
sub options {
my $numopts = @ARGV;
Getopt::Long::Configure('bundling');
GetOptions(
'D|debug+' => \$DEBUG,
'T|test=i' => \$TEST,
'2|test_to_date+' => \$TEST_TO_DATE,
);
return;
}
#///////////////////////////////////////////////////////////
# Read DB Cfg file (i.e. username and password)
sub get_db_cfg {
# Sets the cfg file path and then reads in the username and password).
# Sets the following: $db{cfg_file}, db{username} $db{password}
return;
}
#///////////////////////////////////////////////////////////
sub get_users_from_db {
my @dt = split q{ }, uc scalar localtime;
my $timestamp =
$TEST==1 ? 'sysdate'
: $TEST==2 ? sprintf "'%02s-%03s-%04d %08s'", $dt[2], $dt[1], $dt[4], $dt[3]
: $TEST==3 ? sprintf "'%02s-%03s-%02d %08s'", $dt[2], $dt[1], substr($dt[4],2), $dt[3]
: $TEST==4 ? sprintf "'%02s-%03s-%02d %05s'", $dt[2], $dt[1], substr($dt[4],2), substr($dt[3],0,5)
: $TEST==5 ? sprintf "'%02s-%03s-%04d %05s'", $dt[2], $dt[1], $dt[4], substr($dt[3],0,5)
: $TEST==6 ? sprintf "'%02s-%03s-%04d'", $dt[2], $dt[1], $dt[4]
: $TEST==7 ? sprintf "'%02s-%03s-%02d'", $dt[2], $dt[1], substr($dt[4],2)
: $TEST==8 ? time
: $TEST==9 ? "TO_DATE('".time."')"
: 'nothing you have seen before!! :-)'
;
if( $TEST >= 1 ) {
if( $TEST_TO_DATE ) { $TEST = 2 }
else { $TEST = 1 }
}
my @sql = (
qq{SELECT user_id FROM ACS.USERS WHERE group_name = 'Full Network Access'}, # Works. The rest fail
qq{SELECT user_id FROM ACS.USERS WHERE group_name = 'Full Network Access' AND update_timestamp LIKE $timestamp},
qq{SELECT user_id FROM ACS.USERS WHERE group_name = 'Full Network Access' AND update_timestamp LIKE TO_DATE($timestamp)},
);
say "\$sql[$TEST]=$sql[$TEST]" if $DEBUG;
eval {
my $dbh = DBIx::Simple->connect( 'DBI:Oracle:nms', $db{username}, $db{password},
{ RaiseError => 1, AutoCommit => 1} );
@full_network_access = $dbh->query( $sql[$TEST] )->flat;
};
print Data::Dumper->Dump([\@full_network_access, ],['full_network_access']) if $DEBUG;
if( $@ ) { die "SQL ERROR: $@"; }
return;
}
#///////////////////////////////////////////////////////////
MAIN: {
options();
get_db_cfg();
get_users_from_db();
exit 0;
}
####
> ./show_db_error --test 1
$sql[1]=SELECT user_id FROM ACS.USERS WHERE group_name = 'Full Network Access' AND update_timestamp LIKE sysdate
$full_network_access = [];
> ./show_db_error --test 2
$sql[1]=SELECT user_id FROM ACS.USERS WHERE group_name = 'Full Network Access' AND update_timestamp LIKE '14-JUN-2010 17:50:49'
$full_network_access = [];
> ./show_db_error --test 7
$sql[1]=SELECT user_id FROM ACS.USERS WHERE group_name = 'Full Network Access' AND update_timestamp LIKE '14-JUN-10'
$full_network_access = [];