2014-06-05 39 views
0

我在Perl中有一个变量,我初始化为$invoice_date = '1/6/14'(2014年6月1日)。我怎样才能确定Perl认为这个变量的数据类型?用Perl减去分钟

我想从发票日期减去一分钟以获得2014年5月31日11:59 PM。我怎么能做到这一点有或没有声明$ invoice_date是一个特定的数据类型?

更新:感谢您的意见和答案。由于它是一个字符串,我将尝试连接时间部分。我有另一个变量$ period_end_date设置为2014年5月31日。我将尝试将11:59 PM连接到它。

该字符串随后在SQL语句中发送。如果我能弄清楚SQL对字符串的期望,应该可以插入时间部分。

+4

看一看在['时间:: Piece'(https://metacpan.org/pod/Time::Piece)模块。如果在发布之前总是一个好的步骤,那么可以通过Google搜索寻找答案,但这个问题有很多结果。 –

+2

到Perl,这是一个字符串 – Pierre

+1

至于“SQL期望的字符串”,它取决于数据库。 Sybase将接受许多不同的格式。 Oracle期望无论NLS_DATE或TIMESTAMP参数设置为...和/或您可能需要调用数据库的字符串日期转换函数。 – runrig

回答

3

您需要一些日期操作模块,因为'1/6/14'是纯字符串,并且在事件之前丢弃了两位数年份。

use Time::Piece; 
use Time::Seconds; 

my $t = Time::Piece->strptime("1/6/2014", "%d/%m/%Y"); 
$t -= ONE_MINUTE; 
print $t; 

输出

Sat May 31 23:59:00 2014