1

当我直接在 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 结果的确切格式。出于某种原因,在此之前发生了我不想要的重新格式化。

4

2 回答 2

1

如果您使用的是 DBD::Sysbase 然后引用文档

控制 DATETIME 输出格式 ^

默认情况下,DBD::Sybase 将以 1998 年 11 月 15 日上午 11:13 格式返回 DATETIME 和 SMALLDATETIME 列。这可以通过私有 syb_date_fmt() 方法进行更改。

语法是

$dbh->syb_date_fmt($fmt);
于 2013-01-11T22:34:56.810 回答
0

我假设您希望它们具有相同的格式。我会先看看数据库是否会为您格式化,但由于我不知道您正在处理什么数据库,perl 有几个模块可以用于此目的。它们的祖父是Date::Manip。要将日期格式化为数据库输出的格式,您将:

UnixDate(ParseDate($in), '%Y-%m-%d %H:%M:%S';
于 2013-01-11T21:27:19.870 回答