Convert unix timestamp into ODBC datetime format

Is there a simple way to convert a unix timestamp into std odbc date format ?  

I am extracting the date of my input file in my perl script
my $DateTime = ctime(stat($input)->mtime);

print $DateTime reads  "Sep  8 11:03:38 2004"
But when I can't insert this into sql server; is there a simple conversion routine to convert this into mm/dd/yyyy hh:mm:ss   format ???????????

Subir.
subircAsked:
Who is Participating?

[Webinar] Streamline your web hosting managementRegister Today

x
 
TintinConnect With a Mentor Commented:
Using Date::Manip module to obtain the date format you want it total overkill.

The following will work:

use POSIX 'strftime';
my $datetime = strftime "%D %T",localtime((stat $input)[9]);

0
 
subircAuthor Commented:
Note: I know I can do this by writing my own sub-routine and do the conversion myself.......but is wondering if there is already a function.......!!!!!!!!!
0
 
ozoCommented:
use POSIX;
my $DateTime = strftime("%m/%d/%Y %H:%M:%S",localtime stat($input)->mtime);
0
Upgrade your Question Security!

Your question, your audience. Choose who sees your identity—and your question—with question security.

 
subircAuthor Commented:
Usage: POSIX::strftime(fmt, sec, min, hour, mday, mon, year, wday = -1, yday = -1, isdst = -1)

getting this error when I am running it..........any clues?

Thks!!!
0
 
subircAuthor Commented:
Why do you have to have locatime in the strftime ????? Isn't stat($input)  already has the unformatted date string????
Just wondering.......
0
 
subircAuthor Commented:
Ok this worked....finally.....I did manage to do it

use Date::Manip qw(ParseDate UnixDate);
my $date = ParseDate(ctime($stats->mtime));
my $DateTime = UnixDate($date, "%m/%d/%Y %H:%M:%S");


Thanks!!! Anyways
0
 
ozoCommented:
You seem to be pasing the wrong number of arguments to strftime.
How exactly did you call it?
0
 
subircAuthor Commented:
my $date = ParseDate(ctime($stats->mtime));
my $DateTime = UnixDate($date, "%m/%d/%Y %H:%M:%S");

Thatz  what I have ....and  that  worked.......!!!!!!!!
0
 
TintinCommented:
subirc.

Your method may have worked, but as previously stated, the Date::Manip module is total overkill for this function as it is very big and slow.  Using the POSIX strftime function is *much* more efficient and it is a standard Perl module, which Date::Manip isn't.
0
 
subircAuthor Commented:
But, I am getting an error when I am trying to use POSIX  what you suggested...........

Here's the error....
Usage: POSIX::strftime(fmt, sec, min, hour, mday, mon, year, wday = -1, yday = -1, isdst = -1) at convert.pl line 39
0
 
ozoCommented:
Please show us your convert.pl line 39
0
 
subircAuthor Commented:
use POSIX 'strftime';

my $datafile = $ARGV[0]            or die "Input file not specified\n";
my $outfile = (split /\./,$datafile)[0].".out";      #appending extension for output file
                                  #to the input file name(without extension)
open (DATA,"<$datafile")      or die "Could not open $datafile: $!\n";
open (OUT, ">$outfile")      or die "Could not open $outfile: $!\n";

#get file information
my $stats = stat($datafile);
my $UserId = getpwuid($stats->uid);
my $datetime = strftime "%D %T",localtime((stat $datafile)[9]);
0
 
TintinCommented:
What OS and Perl version are you running?

The snippet you supplied works fine for me.
0
 
subircAuthor Commented:
Version 5
0
 
subircAuthor Commented:
It is cribbing right in the first line -------->>> use POSIX 'strftime'; (line 38)

Subirc
0
 
TintinCommented:
There's no such thing a Perl version 5.

perl -v

will give you the correct version.

Also, what OS are you on.

It's not barfing at the

use POSIX 'strftime';

it's barfing at

my $datetime = strftime "%D %T",localtime((stat $datafile)[9]);

the error means that the strftime function is receiving incorrect parameters.

Try this sample script to see if you get errrors:

#!/usr/bin/perl
use POSIX 'strftime';
print strftime "%Y-%m-%d",localtime((stat '/etc/passwd')[9]);
0
 
subircAuthor Commented:
I am using  5.6.1 built for i386-linux  

OS - linux


 It finally worked with my script.....reason it was failing because i also was using the following module. I commented that line & it worked.

use Time::localtime;

Somehow it confused the interpretor.  

Thanks  Experts!!!!!

This better be good as I spend so much extra time when I already had an answer.......just kidding :D
0
All Courses

From novice to tech pro — start learning today.