【PB】有關日期函式
//1.生肖(年份引數:int ls_year 返回引數:string):
mid(fill('鼠牛虎兔龍蛇馬羊猴雞狗豬',48),(mod(ls_year -1900,12)+13)*2 -1,2)
//2.天干地支(年份引數:int ls_year 返回引數:string):
mid(fill('甲乙丙丁戊己庚辛壬癸',40),(mod(ls_year -1924,10)+11)*2 -1,2)+mid(fill('子醜寅卯辰巳午未申酉戌亥',48),(mod(ls_year -1924,12)+13)*2 -1,2)
//3.星座(日期引數:date ls_date 返回引數:string):
mid("摩羯水瓶雙魚白羊金牛雙子巨蟹獅子處女天秤天蠍射手摩羯",(month(ls_date)+sign(sign(day(ls_date) -(19+integer(mid('102123444423',month(ls_date),1))))+1))*4 -3,4)+'座'
//4.判斷閏年(年份引數:int ls_year 返回引數:int 0=平年,1=閏年):
abs(sign(mod(sign(mod(abs(ls_year),4))+sign(mod(abs(ls_year),100))+sign(mod(abs(ls_year),400)),2)) -1)
//5.某月天數(日期引數:date ls_date 返回引數:int):
integer(28+integer(mid('3'+string(abs(sign(mod(sign(mod(abs(year(ls_date)),4))+sign(mod(abs(year(ls_date)),100))+sign(mod(abs(year(ls_date)),400)),2)) -1))+'3232332323',month(ls_date),1)))
//6.某月最後一天日期(日期引數:date ls_date 返回引數:date):
date(year(ls_date),month(ls_date),integer(28+integer(mid('3'+string(abs(sign(mod(sign(mod(abs(year(ls_date)),4))+sign(mod(abs(year(ls_date)),100))+sign(mod(abs(year(ls_date)),400)),2)) -1))+'3232332323',month(ls_date),1))))
//7.另一個求某月最後一天日期(日期引數:date ls_date 返回引數:date):
a.
RelativeDate (date(year(ls_date)+sign(month(ls_date) -12)+1,mod(month(ls_date)+1,13)+abs(sign(mod(month(ls_date)+1,13)) -1),1),-1)
b.
RelativeDate(date(year(ls_date)+integer(month(ls_date)/12),mod(month(ls_date),12)+1,1),-1)
//8.另一個求某月天數(日期引數:date ls_date 返回引數:int):
a.
day(RelativeDate (date(year(ls_date)+sign(month(ls_date) -12)+1,mod(month(ls_date)+1,13)+abs(sign(mod(month(ls_date)+1,13)) -1),1),-1))
b.
day(RelativeDate(date(year(ls_date)+integer(month(ls_date)/12),mod(month(ls_date),12)+1,1),-1))
//9.某月某日星期幾--同PB系統函式DayName(日期引數:date ls_date 返回引數:string):
'星期'+mid('日一二三四五六',(mod(year(ls_date) -1 + int((year(ls_date) -1)/4) - int((year(ls_date) -1)/100) + int((year(ls_date) -1)/400) + daysafter(date(year(ls_date),1,1),ls_date)+1,7)+1)*2 -1,2)
//10.求相隔若干月份後的相對日期(日期引數:date ls_date 相隔月份(可取負數):int ls_add_month 返回引數:date):
date(year(ls_date)+int((month(ls_date)+ls_add_month)/13),long(mid(fill('010203040506070809101112',48),(mod(month(ls_date)+ls_add_month -1,12)+13)*2 -1,2)),day(ls_date) -integer(right(left(string(day(RelativeDate (date(year(ls_date)+int((month(ls_date)+ls_add_month)/13)+sign(long(mid(fill('010203040506070809101112',48),(mod(month(ls_date)+ls_add_month
-1,12)+13)*2 -1,2)) -12)+1,mod(long(mid(fill('010203040506070809101112',48),(mod(month(ls_date)+ls_add_month -1,12)+13)*2 -1,2))+1,13)+abs(sign(mod(long(mid(fill('010203040506070809101112',48),(mod(month(ls_date)+ls_add_month -1,12)+13)*2 -1,2))+1,13)) -1),1),-1))
-day(ls_date),'00')+'00000',5),3))/100)
//11.求某日在當年所處的週數(日期引數:date ls_date 返回引數:int):
//a.周始日為星期天
//a1
abs(int(-((daysafter( RelativeDate(date(year(ls_date),1,1), -mod(year(ls_date) -1 + int((year(ls_date) -1)/4) - int((year(ls_date) -1)/100) + int((year(ls_date) -1)/400) + 1,7) +1),ls_date)+1)/7)))
//a2(使用DayNumber函式)
abs(int(-((daysafter( RelativeDate(date(year(ls_date),1,1), -DayNumber(date(year(ls_date),1,1))+1),ls_date)+1)/7)))
//b.周始日為星期一
//b1
abs(int(-((daysafter( RelativeDate(date(year(ls_date),1,1), -integer(mid('6012345',mod(year(ls_date) -1 + int((year(ls_date) -1)/4) - int((year(ls_date) -1)/100) + int((year(ls_date) -1)/400) + 1,7),1))),ls_date)+1)/7)))
//b2(使用DayNumber函式)
abs(int(-((daysafter( RelativeDate(date(year(ls_date),1,1), -integer(mid('6012345',DayNumber(date(year(ls_date),1,1)),1))),ls_date)+1)/7)))
//12.求某日相對於過去某一日期所處的週數(日期引數:date ls_date_1(要求的某日),ls_date_2(過去的某日) 返回引數:int):
//注:ls_date_1>ls_date_2
//a.周始日為星期天
//a1
abs(int(-((daysafter( RelativeDate(ls_date_2, -mod(year(ls_date_2) -1 + int((year(ls_date_2) -1)/4) - int((year(ls_date_2) -1)/100) + int((year(ls_date_2) -1)/400) + daysafter(date(year(ls_date_2),1,1),ls_date_2)+ 1,7) +1),ls_date_1)+1)/7)))
//a2(使用DayNumber函式)
abs(int(-((daysafter( RelativeDate(ls_date_2, -DayNumber(ls_date_2)+1),ls_date_1)+1)/7)))
//b.周始日為星期一
//b1
abs(int(-((daysafter( RelativeDate(ls_date_2, -integer(mid('6012345',mod(year(ls_date_2) -1 + int((year(ls_date_2) -1)/4) - int((year(ls_date_2) -1)/100) + int((year(ls_date_2) -1)/400) + daysafter(date(year(ls_date_2),1,1),ls_date_2)+ 1,7) ,1))),ls_date_1)+1)/7)))
//b2(使用DayNumber函式)
abs(int(-((daysafter( RelativeDate(ls_date_2, -integer(mid('6012345',DayNumber(ls_date_2),1))),ls_date_1)+1)/7)))
某月最後一天日期
RelativeDate(date(year(ld_1)+integer(month(ld_1)/12),mod(month(ld_1),12)+1,1),-1)
取得最後一天
day(上面語句)
閏年(1為閏年, 0為平年)
integer(day(RelativeDate(date(year(ld_1), 3, 1), -1))/29)
當前日期所在星期數
integer(daysafter(date(year(ad_date), 1, 1), ad_date)/7) + 1 + integer((daynumber(date(year(ad_date), 1, 1)) + mod(daysafter(date(year(ad_date), 1, 1), ad_date), 7) -1)/7)
相關文章
- 有關日期的SAP函式使用函式
- SQL 日期格式相關函式SQL函式
- 日期函式函式
- SQL函式之日期函式SQL函式
- ABAP日期函式函式
- Sybase日期函式函式
- sql 日期函式SQL函式
- 【Mysql 學習】日期函式函式MySql函式
- 字元函式、數字函式和日期函式字元函式
- MySQL(四)日期函式 NULL函式 字串函式MySql函式Null字串
- 有關箭頭函式函式
- 我的pb 讀取 Execl函式函式
- SQLSERVER日期函式(zt)SQLServer函式
- 日期時間函式函式
- 日期提取函式EXTRACT函式
- oracle日期函式(1)Oracle函式
- oracle日期函式(2)Oracle函式
- oracle日期函式(3)Oracle函式
- oracle日期函式(4)Oracle函式
- oracle日期函式(5)Oracle函式
- Oracle的日期函式Oracle函式
- Sql Server 日期函式SQLServer函式
- 【函式】Oracle函式系列(2)--數學函式及日期函式函式Oracle
- 常用的PB時間函式彙總函式
- 和Null有關的函式Null函式
- SQL 10 函式 3 日期時間函式 - 5 計算日期差額SQL函式
- MySQL 5.7關於日期和時間的函式整理MySql函式
- Oracle OCP(03):字元函式、數字函式和日期函式Oracle字元函式
- MySQL函式大全(字串函式,數學函式,日期函式,系統級函式,聚合函式)MySql函式字串
- Haskell 中的日期函式Haskell函式
- mysql日期函式總結MySql函式
- 計算日期的函式函式
- oracle 日期函式介紹Oracle函式
- js日期轉換函式JS函式
- sqlldr匯入日期函式SQL函式
- Oracle的日期函式(轉)Oracle函式
- Clickhouse 時間日期函式函式
- MYSQL事件使用 日期函式MySql事件函式