[英]PHP or SQL calculate 3 working days before a date
我將Doctrine用於我的應用程序的ORM。 在表中,我有一個“開始日期”。
在php中,我可以計算日期前3天:
date('l jS F (Y-m-d)', strtotime('-3 days'));
但這包括周末,我只想包括工作日。
即,如果活動在星期三進行,我將在星期日收到提醒電子郵件。 我寧願在星期五收到提醒電子郵件。 那么如何計算僅使用星期一至星期五進行計算呢?
如果您也知道如何在Oracle中進行操作,那將是非常棒的。
我希望在php中擁有它,因此我不必使用自定義的oracle函數(以防我想更改數據庫引擎),但是在oracle中了解它也會很有用:-)
多謝你們。
echo date('Y-m-d', strtotime('-3 weekdays', strtotime('2010-12-08')));
將產生2010-12-03(星期五),而不是
echo date('Y-m-d', strtotime('-3 days', strtotime('2010-12-08')));
將會產生2010-12-05(星期日)
DateTime
API也支持strtotime
支持的任何格式。
Afaik,需要一些體操運動才能從Oracle內部進行此計算
date('w')為您提供星期幾的數字表示。 0(星期日)至6(星期六),您只需檢查您的日期是0還是6,然后再減去2(或一)天。
$n = 3 $timestamp = strtotime("-$n days") $day = date('w', $timestamp); if ($day == 0) { $n = $n - 2; } else if ($day == 6) { $n = $n - 1; } $timestamp = strtotime("-$n days") $dateString = date('l jS F (Y-m-d)', $timestamp);
抱歉,我不知道任何oracle特定代碼。
在Oracle中,要獲取星期幾(1-7),請使用以下命令
select to_char(sysdate, 'D')
from dual
這使得排除周六和周日變得微不足道。
但是,“工作日”的確切定義可能因位置而異(並且因業務而異),因此,在這種情況下,我建議使用一個數據庫表來保存特定的工作日期(作為實際日期)。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.