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就可以了,如下图所示。