C 中與SQL中求本週是本年的第幾周

2022-01-19 00:09:03 字數 1157 閱讀 5739

c#中與sql中求本週是本年的第幾周最近的乙個 周報表 既需要c#求本週是今年的第幾周 又需要在儲存過程裡 通過sql求。

在 sql裡 有函式可以直接求出。但是在c#裡 沒有直接的屬性或函式,必須自己來算。

c#裡可以知道今天是本週的第幾天,還可以知道今天是本年的第幾天。這樣我們就可以求出本週是今年的第幾周。 有兩種思路:

1、 可以先算出 上周末是哪天,然後算出上週是第幾周,(演算法是: 用7整除上周末在今年的天數 如果能被整除則 結果就是上週在今年的第幾周,否則 結果+1 ) 最後再 + 1, 就是本週的順序。

例如:**private

intdatepart(system.datetime dt)   

//此時,weeks為上週是本年的第幾周   

return

(weeks +1

);   

}  2、 先計算今年的1月1日是一周中的第幾天,然後用 今天在今年的天數 - 它 + 7,最後直接 用7除這個數 有餘數則+1 即為本週的順序,整除則不加1。

**就不列了。

在sql中,利用函式 datepart(week,getdate()) 直接得到結果。

需要注意的是: datepart(dw,getdate()) 得到的 weekday結果是 1--7

而 c# datetime1.dayofweek 得到的 是 0--6

不過,有一點他們是一樣的 就是 sunday 都是本週的第一天。

最後,通過這些我們可以判斷

本週的起止日期:

sqlserver中

weekstart = convert(varchar(100),(getdate()-datepart(dw,getdate()) +1),23)

weekend = convert(varchar(100),(getdate()-datepart(dw,getdate()) +7),23)

c#中 就不用說了

weekstart = datetime.now.adddays(-(int)datetime.now.dayofweek).tostring("yyyy-mm-dd")

weekend = datetime.now.adddays(6-(int)datetime.now.dayofweek).tostring("yyyy-mm-dd")

C 求無序序列中第k小的元素

c 求無序序列中第k小的元素 利用優先佇列 priority queue 求出乙個無序整數列中第k小的元素 先輸入序列長度 再輸入該整數列 最後輸入第k小元素位置 k 實驗例子 5 序列長度 2 4 3 6 5 該整數列 2 第k小元素位置 3 輸出結果 如下 include include usi...

c 求區間第k大數 陣列中求第K大數的實現方法

問題 有乙個大小為n的陣列a 0,1,2,n 1 求其中第k大的數。該問題是乙個經典的問題,在 演算法導論 中被作為單獨的一節提出,而且其解決方法很好的利用了分治的思想,將時間複雜度控制在了o n 這多少出乎我們的意料,此處暫且不表。該問題還可以變形為 有乙個大小為 n的陣列a 0,1,2,n 1 ...

C 中的ref和out與SQL中的output

有時,我們會需要獲取某個值在方法中的執行狀態,根據定義的方法,我們僅僅能夠獲得乙個返回值,但是,有時我們也許想獲取多個值,通過返回值就不能返回這樣的資訊,我們可以通過在引數前使用ref或out,以得到多個返回值.在執行sql儲存過程時,我們可以通過sql語句在儲存過程中的執行狀態,返回相應的值.sq...