2014-06-05 43 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