datepart(wk,@date)
可以得到某天在本年的第幾周,那麼這一天的在本年的第幾周
減去
這一天所在月的第一天在本年的第幾周再加一,就是這一天在當月的周數。
declare
@date
datetime
set
@date
=
'2010-01-12'
select
cast(datepart(mm,@date)
as
varchar(2))
+
'月第'
+
cast((datepart(wk,@date)
-
datepart(wk,convert(varchar(7),@date,120)
+
'-01')
+
1)
as
varchar(2))
+
'周'
--1月第3周
⑵ SQL SERVER查詢時間是一年中第幾周的函數
1、獲取當前系統資料庫的日期和時間,可以利用函數GETDATE(),select GETDATE()。
⑶ 使用SQL Server日期函數計算某一天是周幾
今天是星期幾,例子 1:
set language N'English'
select datename(weekday, getdate())Wednesday
今天是星期幾,例子 2:
set language N'Simplified Chinese'
select datename(weekday, getdate())星期三
今天是星期幾,例子 3:
set datefirst 1
select datepart(weekday, getdate())
3 -- 星期三
注意:這里用到了另外一個 SQL Server 日期函數 datepart()。 set datefirst 1 表示設置一周的第一天為星期一。在老美,他們的一周的第一天習慣為星期天。我們可以通過 @@datefirst 函數得到當前會話的 datefirst 設置值。
select @@datefirst1
你可能有疑問:set language 後面的語言參數是從哪裡得到的?可以得到其他國家語言中的星期幾嗎?當然是可以的了, 請看下面:
⑷ SQL由已知幾幾年第幾周星期幾推出日期,麻煩給個函數
--我寫的函數如下(湊合著用)
Create Function xfn_GetDate(@YEAR INT,@WEEK INT,@DAY INT)
RETURNS DATETIME
AS
BEGIN
DECLARE @RST DATETIME
SET @RST=CAST( (CAST(@YEAR AS VARCHAR(20))+'-01-01') AS DATETIME)
WHILE @RST<CAST( (CAST(@YEAR AS VARCHAR(20))+'-12-31') AS DATETIME)
BEGIN
IF @WEEK=DATEPART(WW,@RST) AND @DAY=DATEPART(DW,@RST)
RETURN @RST
SET @RST=DATEADD(DD,1,@RST)
END
RETURN @RST
END
說明:@YEAR為年份,@WEEK為第幾星期,@DAY為禮拜的第幾天
運行
SELECT DBO.xfn_GetDate('2009',6,3)
得到的日期是:2009-02-03 00:00:00.000
我用的方法很粗糙,只是遍歷年份的每一天而已..
⑸ MYSQL經典SQL之星期問題
取值為0~6,對應星期一到星期日,每周以星期一為第一天
取值為1~7,對應星期日到星期六,每周以星期日為第一天
取值為Sunday~Saturday,對應星期日到星期六,第一天是星期日;
該函數與參數lc_time_names有關,如果設置此參數值為"zh_CN",則得到對應的中文名稱「星期日」~「星期六」
示例:
2017-01-02是星期一,使用這三個函數分別得到的是0,2,Monday
修改lc_time_names參數後,得到中文名稱:
該函數用於獲取日期是年度中的第幾周。該函數比較復雜,使用不同的mode,得到不同的結果。見下表:
例如,mode值為1,則每周的第一天搜哪為周一,week()函數的結果為0~53,如果第一個周天數少於4,則記為第0周,如果第一個周天數大於等於4,則記為第1周。
再如,mode值為2,則每周第一天為周日,week()函數的結果為1~53,如果第一個周里包含了周日,則記為第1周,如果第一個周里沒有周日,則記為上一年度的最後一周。
實際上,這個參數主要是為了解決跨年的周該如何歸屬的問題,是算作本年度的第一周,還是上一年度的最後一周,又或者是算作第0周。這需要根據使用場景和習慣來選擇。
但不管怎麼歸屬,week函數本身的取值范圍有限,所以再跨年的時間區間一般不用此函數(後邊舉例說明)。
參考:
http://dev.mysql.com/doc/refman/5.7/en/date-and-time-functions.html#function_week
假設我們有一張銷售表,內容如下:
現在,我們要統計每周的銷售額。
首先想到的是用week函數,計算日期對應的周數,然後按照這個周數來進行分組求和:
如果能保證這個日期區間是在一個年度內的,那麼用week函數完全沒有問題。
很不幸的是,通常日期區間是跨年的,例如我們這個示例中的數據,數蔽恰好有跨年的周,2010-12-31日是第52周,2011-01-01變成了2011年度的第0周,而實際上這兩天是在同一周。
要解決這個問題,我們不能指望week函數,因為該函數的返回結果總是在0~53循環,我們需要找一個固定時間為第一周,之後的周數累加而非循環。
例如,我們選擇2010-01-03為第一周的第一天,之後的任意一天201x-xx-xx距離2010-01-03的天數/7記為周數,得到結果如下:
以上解決方案中,我們選擇2010-01-03為起始日期,因為它離我們要統計的時間足夠遠,同時它是星期日(我們認為周日是一周的第一天)。
如世畢碼果我們需要把星期一當作第一天,只需要改為2010-01-04即可。
⑹ SQL日期函數
datepart(weekday,cardBeginTime)
這是獲得表裡cardBeginTime這個欄位中的所有日期每天分別是星期幾
in (1,7) 是指獲取星期六和星期天的記錄
sql server 默認sunday 是每周開始第一天,所以取1,7代表星期六和星期天。
⑺ 判斷某天是當月的第幾周的sql函數
創建函數
CREATEFUNCTIONWeekOfMonth(@daydatetime)
RETURNSint
AS
begin
----declare@daydatetime
declare@numint
declare@Startdatetime
declare@ddint
declare@dayofweekchar(8)
declare@dayofweek_numchar(8)
declare@startWeekDaysint
---set@day='2009-07-05'
ifdatepart(dd,@day)=1
return1
else
set@Start=(SELECTDATEADD(mm,DATEDIFF(mm,0,@day),0))--一個月第一天的
set@dayofweek=(datename(weekday,@Start))---得到本月第一天是周幾
set@dayofweek_num=(select(case@dayofweekwhen'星期一'then2
when'星期二'then3
when'星期三'then4
when'星期四'then5
when州旁讓'星期五'then6
when'星期六'then7
when'星期日'then1
end))
set@dayofweek_num=7-@dayofweek_num+1---得到本月的第一周一共有幾天
---print@dayofweek_num
set@dd=datepart(dd,@day)----得到今天是啟顫這個月的第幾天
--print@dd
if@dd<=@dayofweek_num--小於前一周的天數
return1
else
set@dd=@dd-@dayofweek_num
if@dd%7=0
begin
冊局set@num=@dd/7
return@num+1
end
else--if@dd%7<>0
set@num=@dd/7
set@num=@num+1+1
return@num
end
測試
selectdbo.WeekOfMonth('2013-11-14')
結果
⑻ SQL SERVER查詢時間是一年中第幾周的函數
1、獲取當前系統資料庫的日期和時間,可以利用函數GETDATE(),select GETDATE()。
⑼ 用SQL語句計算出給定日期是星期幾
1、首先可以直接用datepart函數,第一個參數設置成weekday就可以了,如下圖所示。