Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
SQL Server查询-计数不同日期时间字段_Sql_Sql Server_Distinct - Fatal编程技术网

SQL Server查询-计数不同日期时间字段

SQL Server查询-计数不同日期时间字段,sql,sql-server,distinct,Sql,Sql Server,Distinct,假设SQL Server表中有以下记录 Date 19/5/2009 12:00:00 pm 19/5/2009 12:15:22 pm 20/5/2009 11:38:00 am 获取类似的SQL语法是什么 日期计数 2009年5月19日2 2009年5月20日1您需要对日期字段的仅日期版本进行任何分组,如下所示 SELECT CONVERT(VARCHAR(10), YourDateColumn, 101), COUNT(*) FROM YourTable GROU

假设SQL Server表中有以下记录

Date
19/5/2009 12:00:00 pm
19/5/2009 12:15:22 pm
20/5/2009 11:38:00 am
获取类似的SQL语法是什么

日期计数
2009年5月19日2

2009年5月20日1

您需要对日期字段的仅日期版本进行任何分组,如下所示

SELECT
    CONVERT(VARCHAR(10), YourDateColumn, 101),
    COUNT(*)
FROM
    YourTable
GROUP BY
    CONVERT(VARCHAR(10), YourDateColumn, 101)
但我通常会这样做,因为这样可以避免转换为varchar

SELECT
    DATEPART(yy, YourDateColumn),
    DATEPART(mm, YourDateColumn),
    DATEPART(dd, YourDateColumn),
    COUNT(*)
FROM
    YourTable
GROUP BY
    DATEPART(yy, YourDateColumn),
    DATEPART(mm, YourDateColumn),
    DATEPART(dd, YourDateColumn)
编辑:另一种只获取日期时间的日期部分的方法

DATEADD(d, 0, DATEDIFF(d, 0, YourDateColumn))

这取决于您的数据库引擎。对于SQL Server 2008(及以后的版本),可以使用
日期
类型来执行此操作

select
    convert(date, date_column_name) as Date,
    count(1) as Count

from table_name

group by convert(date, date_column_name)
这取决于你的工作。Mysql示例:

SELECT DATE_FORMAT(dateColumn, '%e/%c/%Y') as `date`, COUNT(*)
FROM YourTable
GROUP BY `date`

您使用的是什么RDBMS?使用Sybase,您的查询如下所示:

select date(datetimeColumn) as myDate, count(*) as myTotal
from thisTable
Group by myDate
Order by myTotal, myDate

谷歌也发现了这个

选择CAST(FLOOR(CAST(Expr1作为FLOAT))作为DATEtime)作为Expr1

将(*)计数为Expr2

从我的桌子上

分组

转换(地板(转换(Expr1为浮动))为日期时间)

犯人

  • 高速执行
  • 返回的结果位于原始区域设置中。希腊Ex 2009年5月19日

  • 谢谢大家

    您使用的是哪种数据库服务器?哪种RDBMS?T-SQL、P/L SQL等的答案不同…抱歉,在标题中修复了它。MS-SQL。感谢这一年唯一的团队。他想要完整的date当它仍然转换为varchar时,您可以将它转换回datetime(给您该日期的12:00AM),或者您可以将datepart的结果转换为datetime。