2013-01-11 46 views
1

當我在SQL服務器上直接查詢數據源時,日期和時間戳列以下面顯示的格式返回。Perl重寫SQL日期格式

2011-05-26 16:19:20 
2013-01-10 15:20:35 
2008-01-10 14:51:01 
2013-01-10 17:40:31 
2008-03-26 18:23:20 
2010-03-04 16:18:14 


然而,當我查詢,在一個perl腳本相同的數據源和寫入結果爲.txt文件,日期格式寫入,如下所示。

Jun 14 2011 10:49AM 
Jun 17 2010 04:23PM 
Aug 13 2010 08:28AM 
Jun 18 2007 08:41AM 
Jul 26 2012 07:18PM 
Jun 11 2010 11:37AM 
Aug 20 2010 09:28AM 


SQL查詢:

SELECT TOP 100 PERCENT UserNM AS [User ID], MAX(EventDT) AS [Last Login Date] 
FROM dbo.WFEventLog 
GROUP BY UserNM 
ORDER BY UserNM 

腳本部分用於寫入文件:

open(FILE, ">cleanup.txt") || die "$!\n"; 

    while(my $hash_ref = $sth->fetchrow_hashref){ 

     my $userid = "$hash_ref->{'UserID'}"; 
     my $logindt = "$hash_ref->{'Last Login Date'}"; 

      # dump all registered users into .csv file 
      print FILE "$userid \t $logindt\n"; 

    } 

close(FILE); 

我所尋找的是從SQL結果的精確格式被寫入文件。出於某種原因,在我不想要的情況發生之前會發生重新格式化。

+2

什麼是真正的問題在這裏? – oalders

回答

0

我假設你想要他們在相同的格式。如果數據庫會爲你設置格式,我會首先看到,但由於我不知道你正在處理的是哪個數據庫,因此perl有幾個模塊可以用於此目的。他們的爺爺都是Date::Manip。要通過數據庫格式格式化日期作爲輸出,你會:

UnixDate(ParseDate($in), '%Y-%m-%d %H:%M:%S'; 
1

如果您正在使用DBD :: SYSBASE則引述documentation

控制DATETIME輸出格式^

默認情況下,DBD :: Sybase將以1998年11月15日11:13 AM格式返回DATETIME和SMALLDATETIME列。這可以通過私有的syb_date_fmt()方法進行更改。

語法

$dbh->syb_date_fmt($fmt);