本人有一订单表tb_OrderInfo,表中有一个下单时间字段OrderDate,类型为datetime,字段GoodsFee为销售额。我想统计当年,当月,当日的订单销售。
当年,当月,当日均用DateTime.Now来获得。比如年:string year = DateTime.Now.Year.ToString();问题是我怎么关联到
SQL语句中,是不是这样:select SUM(GoodsFee) from tb_OrderInfo where OrderDate Like '%" + year + "%';
当月,当日又怎么关联?请指教?

解决方案 »

  1.   

    当年:select sum(GoodsFee) from tb_OrderInfo where datediff(y,OrderDate,getdate())=0
    当月:select sum(GoodsFee) from tb_OrderInfo where datediff(m,OrderDate,getdate())=0
    当日:select sum(GoodsFee) from tb_OrderInfo where datediff(d,OrderDate,getdate())=0
      

  2.   


    --當年
    select SUM(GoodsFee) from tb_OrderInfo where datepart(yy, OrderDate )=datepart(yy,getdate())
    --當月
    select SUM(GoodsFee) from tb_OrderInfo where datepart(mm, OrderDate )=datepart(mm,getdate())--當天
    select SUM(GoodsFee) from tb_OrderInfo where datepart(dd, OrderDate )=datepart(dd,getdate())
      

  3.   


    create table tb_OrderInfo
    (
      ids int identity(1,1),
      OrderDate datetime,
      GoodsFee decimal(18,2)
    )insert into tb_OrderInfo
    select '2009-4-5',32.00
    union all
    select '2009-4-6',39.00
    union all
    select '2009-2-6',31.00
    union all
    select '2009-2-6',32.00
    union all
    select '2009-2-6',33.00
    union all
    select '2008-2-6',34.00
    union all
    select '2008-3-6',35.00select * from tb_OrderInfoselect distinct
    [当年] = (select sum(goodsfee) from tb_OrderInfo where year(orderdate) = year(getdate())),
    [当月] = (select sum(goodsfee) from tb_OrderInfo where convert(varchar(7),orderdate,120) =convert(varchar(7),getdate(),120)   ),
    [当日] = (select sum(goodsfee) from tb_OrderInfo where convert(varchar(10),orderdate,120) = convert(varchar(10),getdate(),120))from tb_OrderInfo当年                                      当月                                      当日
    --------------------------------------- --------------------------------------- ---------------------------------------
    167.00                                  71.00                                   39.00(1 row(s) affected)
      

  4.   


    哈哈,这个SQL肯定是有问题的,当月:是指年份相同,月份也相同.
    当日:是指年份相同,月份也相同!!!
      

  5.   

    这个还是 datediff() 好点
      

  6.   

    select * from table where datediff(year,convert(varchar(10),OrderDate,23),convert(varchar(10),getdate(),23))=0select * from table where datediff(mm,convert(varchar(10),OrderDate,23),convert(varchar(10),getdate(),23))=0select * from table where datediff(day,convert(varchar(10),OrderDate,23),convert(varchar(10),getdate(),23))=0
      

  7.   

    select * from table where datediff(year,convert(varchar(10),OrderDate,23),convert(varchar(10),getdate(),23))=0select * from table where datediff(month,convert(varchar(10),OrderDate,23),convert(varchar(10),getdate(),23))=0select * from table where datediff(day,convert(varchar(10),OrderDate,23),convert(varchar(10),getdate(),23))=0
      

  8.   

    select * from table where datediff(year,convert(varchar(10),OrderDate,23),convert(varchar(10),getdate(),23))=0select * from table where datediff(month,convert(varchar(10),OrderDate,23),convert(varchar(10),getdate(),23))=0select * from table where datediff(day,convert(varchar(10),OrderDate,23),convert(varchar(10),getdate(),23))=0
      

  9.   

    晕了!!LZ都已经说明OrderDate字段是datetime类型了,你们还给他转换干什么呢??当年:select sum(GoodsFee) from tb_OrderInfo where datediff(y,OrderDate,getdate())=0 
    当月:select sum(GoodsFee) from tb_OrderInfo where datediff(m,OrderDate,getdate())=0 
    当日:select sum(GoodsFee) from tb_OrderInfo where datediff(d,OrderDate,getdate())=0上面的就完全可以了!如果是ACCESS的话就把datediff的第一个参数加上单引号,getdate()改成now()就可以了
      

  10.   

    如果当日没订单的时候,查询出来的数据是NULL
      

  11.   

    弄了半天不知道怎么判断,请指教。还有我的数据库里面明明有2009年的订单,为什么用这个select sum(GoodsFee) from tb_OrderInfo where datediff(y,OrderDate,getdate())=0 这个用SQL查询出来是空的。
    还有运行的时候出错,还是运行出错:未将对象引用设置到对象的实例。