DatePart 函数
返回一个包含已知日期的指定时间部分的 Variant (Integer)。语法DatePart(interval, date[,firstdayofweek[, firstweekofyear]])DatePart 函数语法中有下列命名参数:部分 描述
interval 必要。字符串表达式,是要返回的时间间隔。
date 必要。要计算的 Variant (Date) 值。
Firstdayofweek 可选。指定一个星期的第一天的常数。如果未予指定,则以星期日为第一天。
firstweekofyear 可选。指定一年第一周的常数。如果未予指定,则以包含 1 月 1 日的星期为第一周。 设置interval 参数的设定值如下:设置 描述
yyyy 年
q 季
m 月
y 一年的日数
d 日
w 一周的日数
ww 周
h 时
n 分钟
s 秒 firstdayofweek 参数的设定值如下:常数 值 描述
vbUseSystem 0 使用 NLS API 设置。
vbSunday 1 星期日(缺省值)
vbMonday 2 星期一
vbTuesday 3 星期二
vbWednesday 4 星期三
vbThursday 5 星期四
vbFriday 6 星期五
vbSaturday 7 星期六 firstweekofyear 参数的设定值如下:常数 值 描述
vbUseSystem 0 使用 NLS API 设置。
vbFirstJan1 1 从包含 1 月 1 日的星期开始(缺省值)。
vbFirstFourDays 2 从第一个其大半个星期在新的一年的一周开始。
vbFirstFullWeek 3 从第一个无跨年度的星期开始。 说明DatePart 函数可以用来计算日期并返回指定的时间间隔。例如,可以使用DatePart 计算某个日期是星期几或目前为几点钟。firstdayofweek 参数会影响使用时间间隔符号 “W” 或 “WW” 计算的结果。如果 date 是日期文字,则指定的年份成为该日期的固定部分。但是,如果 date 用双引号 (" ") 括起来,且年份略而不提,则在每次计算 date 表达式时,当前年份都会插入到代码之中。这样就可以书写适用于不同年份的程序代码。
返回一个包含已知日期的指定时间部分的 Variant (Integer)。语法DatePart(interval, date[,firstdayofweek[, firstweekofyear]])DatePart 函数语法中有下列命名参数:部分 描述
interval 必要。字符串表达式,是要返回的时间间隔。
date 必要。要计算的 Variant (Date) 值。
Firstdayofweek 可选。指定一个星期的第一天的常数。如果未予指定,则以星期日为第一天。
firstweekofyear 可选。指定一年第一周的常数。如果未予指定,则以包含 1 月 1 日的星期为第一周。 设置interval 参数的设定值如下:设置 描述
yyyy 年
q 季
m 月
y 一年的日数
d 日
w 一周的日数
ww 周
h 时
n 分钟
s 秒 firstdayofweek 参数的设定值如下:常数 值 描述
vbUseSystem 0 使用 NLS API 设置。
vbSunday 1 星期日(缺省值)
vbMonday 2 星期一
vbTuesday 3 星期二
vbWednesday 4 星期三
vbThursday 5 星期四
vbFriday 6 星期五
vbSaturday 7 星期六 firstweekofyear 参数的设定值如下:常数 值 描述
vbUseSystem 0 使用 NLS API 设置。
vbFirstJan1 1 从包含 1 月 1 日的星期开始(缺省值)。
vbFirstFourDays 2 从第一个其大半个星期在新的一年的一周开始。
vbFirstFullWeek 3 从第一个无跨年度的星期开始。 说明DatePart 函数可以用来计算日期并返回指定的时间间隔。例如,可以使用DatePart 计算某个日期是星期几或目前为几点钟。firstdayofweek 参数会影响使用时间间隔符号 “W” 或 “WW” 计算的结果。如果 date 是日期文字,则指定的年份成为该日期的固定部分。但是,如果 date 用双引号 (" ") 括起来,且年份略而不提,则在每次计算 date 表达式时,当前年份都会插入到代码之中。这样就可以书写适用于不同年份的程序代码。
union
select id,left(datetime,7) as datetime,value from a where left(datetime,7)<>'-' group by id,datetime,value
union
select id,left(datetime,7) as datetime,value from a where left(datetime,7)<>'-' group by id,datetime,value这两个都报错:
SELECT 子句中包含一个保留字、拼写错误或丢失的参数,或标点符号不正确。
这两个中的datetime应是指表中的“datetime字段名”吧?
这条语句实现后的表现为
ID datetime(时间格式存储) value
1 2001-1 11
2 2001-1 100
3 2001-2 200
4 2001-11 300
5 2001-11 500
...
无法去掉重复呀!(是因为有value字段)
那怎么才能是实现
ID datetime value
1 2001-1 11
3 2001-2 200
5 2001-11 500
...如果可以实现成
ID datetime value
1 2001-1 55.5
3 2001-2 200
5 2001-11 400
...
即value字段的值为平均值更好
无法去掉重复呀,进行子查询也是一样!
select format(datetime,"yyyy_mm") as datetime,value from 表名 a
where datetime=(select Max(b.datetime) from 表名 b where
a.datetime=b.datetime)
INSERT INTO #TB SELECT 1,'2001-1-1 0:00:00',11
UNION ALL SELECT 2,'2001-1-11 0:00:00',100
UNION ALL SELECT 3,'2001-2-1 0:00:00', 200
UNION ALL SELECT 4,'2001-11-1 0:00:00', 300
UNION ALL SELECT 5,'2001-11-11 0:00:00', 500
Select * FROM #TB
Select id,CAST(DatePart(year,Datetime) As VarCHar(4))+'-'+CAST(DatePart(Month,Datetime) As VarCHar(2)) As RQ, value
INTO #T From #TB
Select rq,CAST(Sum(Value) As Decimal(9,2))/Count(*)FROM #T
Group By rq
DROP TABLE #T结果
-------
1 2001-01-01 00:00:00.000 11
2 2001-01-11 00:00:00.000 100
3 2001-02-01 00:00:00.000 200
4 2001-11-01 00:00:00.000 300
5 2001-11-11 00:00:00.000 5002001-1 55.5000000000000
2001-11 400.0000000000000
2001-2 200.0000000000000
或连续查时如2001-11到2001-12只能查出2001-11的数据,
若使用连续查询为2001-11到2002-1时,就能正常显示所有数据?
为什么能?谁能解释一下呀是什么原因,怎么解决?