我需要在每个月的脚本中更改以下值。我在HP-UX环境中使用ksh shell。每个月有4件事需要改变,即当前月份(我得到它),上个月,脚本中的任何月份应该在下个月递增(APR到MAY),值2016-05和2016-06应该下个月采用值2016-06和2016-07。请让我知道命令和可能的方法。
注意:上个月和分区名称相同,但它们并不总是相同。
我的脚本是
curmon=$(echo `date +'%b'`|tr -s '[:lower:]' '[:upper:]')
This month is ${curmon}.
Previous month is ${premon}.
alter table test add PARTITION test_APR01
VALUES LESS THAN (TO_DATE(' 2016-05-22 00:00:00', 'SYYYY-MM-DD HH24:MI:SS', 'NLS_CALENDAR=GREGORIAN'))
tablespace abc;
alter table test add PARTITION test_APR02
VALUES LESS THAN (TO_DATE(' 2016-05-25 00:00:00', 'SYYYY-MM-DD HH24:MI:SS', 'NLS_CALENDAR=GREGORIAN'))
tablespace abc;
alter table test add PARTITION test_APR03
VALUES LESS THAN (TO_DATE(' 2016-06-01 00:00:00', 'SYYYY-MM-DD HH24:MI:SS', 'NLS_CALENDAR=GREGORIAN'))
tablespace abc;
我应该得到这样的输出。
This month is JAN.
Previous month is DEC.
alter table test add PARTITION test_MAY01
VALUES LESS THAN (TO_DATE(' 2016-06-22 00:00:00', 'SYYYY-MM-DD HH24:MI:SS', 'NLS_CALENDAR=GREGORIAN'))
tablespace abc;
alter table test add PARTITION test_MAY02
VALUES LESS THAN (TO_DATE(' 2016-06-25 00:00:00', 'SYYYY-MM-DD HH24:MI:SS', 'NLS_CALENDAR=GREGORIAN'))
tablespace abc;
alter table test add PARTITION test_MAY03
VALUES LESS THAN (TO_DATE(' 2016-07-01 00:00:00', 'SYYYY-MM-DD HH24:MI:SS', 'NLS_CALENDAR=GREGORIAN'))
tablespace abc;
答案 0 :(得分:1)
您可以使用now
选项将date
以外的日期传递给--date
。 E.g:
date --date "Last month" +%b
将返回(截至今天)dec
。
有关详细信息,请参阅info docs。
关于其他价值观,我不太清楚你的意思。它应该依赖于之前脚本中的任何内容吗?听起来像你有一个基础值 - 我认为你应该能够用相同的机制解决这个问题。例如:
date --date "2016-06-22 +1 month" +%F
2016-07-22
答案 1 :(得分:0)
这个怎么样?
YEST=$(echo $(date +%s) - 60*60*24 | bc);python -c "import datetime;print(datetime.datetime.fromtimestamp(int($YEST)).strftime('%Y-%m-%d %H:%M:%S'))"
结果。
2016-01-06 15:52:03
第一。改变" YEST"
位2st。更改为所需的格式 " strftime('%Y-%m-%d%H:%M:%S')"
其他语言(php或perl)也可以这样做