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 表达式时,当前年份都会插入到代码之中。这样就可以书写适用于不同年份的程序代码。

解决方案 »

  1.   

    select DISTINCT format(datetime,'yyyymm') as datetime,value from table
      

  2.   

    select distinct id left(datetime,6) as datetime,value
    union
    select id,left(datetime,7) as datetime,value from a where left(datetime,7)<>'-' group by id,datetime,value
      

  3.   

    select DISTINCT format(datetime,'yyyymm') as datetime,value from tableselect distinct id left(datetime,6) as datetime,value
    union
    select id,left(datetime,7) as datetime,value from a where left(datetime,7)<>'-' group by id,datetime,value这两个都报错:
    SELECT 子句中包含一个保留字、拼写错误或丢失的参数,或标点符号不正确。
      

  4.   

    format(datetime,'yyyymm')left(datetime,6) 
    这两个中的datetime应是指表中的“datetime字段名”吧?
      

  5.   

    select DISTINCT format(datetime,'yyyymm') as datetime,value from table
    这条语句实现后的表现为
    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字段的值为平均值更好
      

  6.   

    select DISTINCT datetime,value from (select format(datetime,'yyyymm') as datetime,value from table) as aaaa
      

  7.   

    select DISTINCT datetime,value from (select format(datetime,'yyyymm') as datetime,value from table) as aaaa
    无法去掉重复呀,进行子查询也是一样!
      

  8.   

    看样子样主的意思是要查出每月value值最大的那条记录,难道写不能表述得清楚些吗?
      

  9.   

    看看这行不:
    select format(datetime,"yyyy_mm") as datetime,value from 表名 a 
                where datetime=(select Max(b.datetime) from 表名 b where       
                                a.datetime=b.datetime)
      

  10.   

    CREATE Table #TB (ID int,datetime Datetime,value Int)
    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
      

  11.   

    使用format(datetime,"yyyy_mm")格式输出时间后,当遇上时间格式为如“2001-11或1992-2或2001-12”时,单查是无法查出,
    或连续查时如2001-11到2001-12只能查出2001-11的数据,
    若使用连续查询为2001-11到2002-1时,就能正常显示所有数据?
    为什么能?谁能解释一下呀是什么原因,怎么解决?
      

  12.   

    应该是 使用format(datetime,"yyyy-mm")格式输出时间