巧用日期時間函式

2021-06-21 20:18:43 字數 1412 閱讀 4050

在做一張考勤表的時候會涉及到很多的日期以及星期幾,每個月的天數不一樣,每個日期又需要一一的對應星期幾。

報表要實現上圖所示的樣子。思路是:客戶輸入乙個日期引數,根據這個日期在考勤表中列出該月所有的考勤資訊。

要判斷輸入的這個日期所在月有幾天,如果我們自己來寫表示式計算,會很複雜,首先需要判斷年份是閏年還是平年,然後再判斷月份,客戶的表示式:b3:=case(month(@arg1),1,」31″,2,」29″,3,」31″,4,」30″,5,」31″,6,」30″,7,」31″,8,」31″,9,」30″,10,」31″,11,」30″,12,」31″)。

b4:=if(year(@arg1)%4!=0&&year(@arg1)==2,to(1,int(b3)-1),to(1,int(b3)))

潤幹提供了乙個日期時間函式daysinmonth()。就能取到當月的天數。用潤幹提供的函式直接寫上b4:=to(1,daysinmonth(@arg1))就能準確簡單的實現上面兩行**的作用。

然後下面一行客戶希望對應每個號數乙個星期幾。再對應出星期幾之前需要確定用to擴充套件出來的號數的確切日期。這裡用reldate()和monthbegin(  )函式就可以實現。

b5表示式為:=reldate(monthbegin(@arg1),b4-1)

下面就根據具體的日期得出對應的星期,一般首先想到的就是把號數除以7取餘,然後根據得到的餘數用乙個map函式來對應的顯示出星期幾。

而使用潤幹提供的函式:dayname()就能直接實現。

b6表示式為:=dayname(b5)

這樣這張報表的表頭部分日期、星期也就擴充套件好了。

報表設計介面圖

預覽後的區域性圖

然後根據日期取出對應的考勤資訊就容易得多了。

潤幹提供的很多函式都能在做報表時幫我很大的忙,這些函式既簡單又使用,巧妙的運用這些函式不但可以節省我們做報表的時間,而且能優化報表提高報表的效能。

報表用到的幾個日期時間函式介紹:

函式:daysinmonth(dateexp)

說明:獲得指定日期所在月的天數

引數說明:dateexp   日期或標準日期格式的字串

返回值:整數

函式:reldate(dateexp, nexp)

說明:從給定的日期型資料中,算出相差n天後的新的日期資料

引數說明:dateexp   日期或標準日期格式的字串nexp 整數表示式,需要求得nexp天後的新日期

返回值:整數

函式:monthbegin( dateexp )

說明:取得指定日期所在月的月首

引數說明:dateexp日期或標準日期格式的字串

返回值:日期時間

函式:dayname(dateexp)

說明:從日期型資料中獲得該日的星期名稱

引數說明:dateexp   日期或標準日期格式的字串

返回值:字元型

sql server日期時間函式

2.dateadd 在向指定日期加上一段時間的基礎上,返回新的 datetime 值 例如 向日期加上2天 select dateadd day,2,2004 10 15 返回 2004 10 17 00 00 00.000 3.datediff 返回跨兩個指定日期的日期和時間邊界數。select ...

sql server日期時間函式

sql server日期時間函式 sql server中的日期與時間函式 1.當前系統日期 時間 select getdate 2.dateadd 在向指定日期加上一段時間的基礎上,返回新的 datetime 值 例如 向日期加上2天 select dateadd day,2,2004 10 15 ...

sql server日期時間函式

sql server中的日期與時間函式 1.當前系統日期 時間 select getdate 2.dateadd 在向指定日期加上一段時間的基礎上,返回新的 datetime 值 例如 向日期加上2天 select dateadd day,2,2004 10 15 返回 2004 10 17 00 ...