• SqlServer 笔记一 某表中每个月的产品数量(DATENAME() 与 DATEPART()、YEAR())


    1、使用 DATENAME() 函数 

    SELECT DATENAME(yyyy, [columnName]) + '/' + DATENAME(mm, [columnName]) AS monthDate,COUNT(*) AS number FROM [tableName]
    GROUP BY DATENAME(yyyy, [columnName]) ,DATENAME(mm, [columnName])
    ORDER BY monthDate DESC

    结果如下:

    DATENAME ( datepart , date ) 返回值是一个 nvarchar 值。

    参考文档: DATANAME的使用

    2、使用 year() month() 函数:

    SELECT cast(year([columnName]) as varchar(8))+'/'+cast(month([columnName]) as varchar(8)) AS monthDate,COUNT(*) AS number FROM [tableName]
    GROUP BY year([columnName]),month([columnName])
    ORDER BY convert(datetime,cast(year([columnName]) as varchar(8))+' - '+cast(month([columnName]) as varchar(8)) + '-01') DESC

    结果如下:

    YEAR ( date ) 返回的是一个 INT 值 其与 DATEPART ( year , date ) 返回的值一样。

    MONTH ( date ) 返回的是一个 INT 值 其与 DATEPART ( month , date ) 返回的值一样。

    参考文档:DATEPART的使用      YEAR的使用

    总结:

    1、在目前的数据库中使用第一种方式更为简便。但是需要注意的是在不同数据库中第一种方式使用的 DATENAME ( datepart , date ) 函数返回的值是有区别的:

    以月份为例  DATENAME ( month , ‘2016/1/8’ ) 在有的数据库中返回的是 ‘01’,但是有的数据库中返回的值就是 ‘January’  这个是与数据库的设置有关的,可以用以下语句查询: SELECT @@Language  我的数据库返回的是 ‘简体中文’。

    示例:

    SET LANGUAGE 'Italian'
    SELECT DATENAME(month, '2016-01-08') AS 'Month Name'
    
    SET LANGUAGE 'English'
    SELECT DATENAME(month, '2016-01-08') AS 'Month Name'
    
    SET LANGUAGE 'Simplified Chinese'
    SELECT DATENAME(month, '2016-01-08') AS 'Month Name'

    运行结果:

    所以如果不知道数据库是何种语言,使用第二种方法是通用的选择。

    2、DATENAME() 函数与 DATEPART() 函数在大部分的时候返回的值也是一样的,但还是有所区别:

    以月份那个为例,即使返回数字,DATENAME() 返回的依然是 ‘01’,而 DATEPART() 返回的是 ‘1’

    以周几(weekDay)为例,SELECT DATENAME(WEEKDAY,'2016-01-08'),DATEPART(WEEKDAY,'2016-01-08') 返回的是 ‘星期五’,‘6’

     

  • 相关阅读:
    数据库事务4种隔离级别及7种传播行为
    Spring AOP深入剖析
    SQL语句-创建索引
    global文件中的application_start方法中做: 定时器
    细说ASP.NET Forms身份认证
    asp.net(C#)实现功能强大的时间日期处理类完整实例
    C# 文件操作类大全
    SQL Server Profiler:使用方法和指标说明
    分库分表原则 总结
    做软件与团队建设——对带研发团队和管理的总结
  • 原文地址:https://www.cnblogs.com/waitingAlone/p/5112098.html
Copyright © 2020-2023  润新知