1

私の DateCompleted は日付と時刻を返します。日付だけでグループ化し、時間を無視したい場合。これについてどうすればいいですか?

SELECT  
  Cast(Jobs.DateCompleted AS VarChar) AS 'DateCompleted',
  SUM(Metrics.GB) AS GB, 
  SUM(Metrics.KB) AS KB
FROM Metrics 
INNER JOIN Jobs ON Jobs.JobId = Metrics.JobId 
INNER JOIN Projects ON Projects.ProjectId = Jobs.ProjectId 
INNER JOIN JobTypes ON JobTypes.JobTypeId = Jobs.JobTypeId
WHERE Jobs.DateCompleted BETWEEN '12/01/2012' AND '12/03/2012' 
GROUP BY Jobs.DateCompleted
4

4 に答える 4

4

SQL Server を使用している場合は、値を に変換してvarchar、時間を削除する形式にすることができます。

SELECT convert(char(10), Jobs.DateCompleted, 120) AS DateCompleted,
  SUM(Metrics.GB) AS GB, 
  SUM(Metrics.KB) AS KB
FROM Metrics 
INNER JOIN Jobs 
  ON Jobs.JobId = Metrics.JobId 
INNER JOIN Projects 
  ON Projects.ProjectId = Jobs.ProjectId 
INNER JOIN JobTypes 
  ON JobTypes.JobTypeId = Jobs.JobTypeId
WHERE Jobs.DateCompleted Between '12/01/2012' AND '12/03/2012' 
GROUP BY convert(char(10), Jobs.DateCompleted, 120)

SQL Server 2008 以降を使用している場合は、値を日付としてキャストできます。

SELECT cast(Jobs.DateCompleted as date) AS DateCompleted,
  SUM(Metrics.GB) AS GB, 
  SUM(Metrics.KB) AS KB
FROM Metrics 
INNER JOIN Jobs 
  ON Jobs.JobId = Metrics.JobId 
INNER JOIN Projects 
  ON Projects.ProjectId = Jobs.ProjectId 
INNER JOIN JobTypes 
  ON JobTypes.JobTypeId = Jobs.JobTypeId
WHERE Jobs.DateCompleted Between '12/01/2012' AND '12/03/2012' 
GROUP BY cast(Jobs.DateCompleted as date)

注:以前のタグに基づいてSQL Serverを想定しています

于 2012-12-04T15:17:19.717 に答える
0

rdbmsを指定していないので、ここに大げさな推測があります。

SQL Serverを使用している場合はdatepart、日時の一部でグループ化できます。

GROUP BY DATEPART(year, Jobs.DateCompleted),
         DATEPART(month, Jobs.DateCompleted),
         DATEPART(day, Jobs.DateCompleted)
于 2012-12-04T15:34:39.060 に答える
0

答えは、datetime を明示的に (日付がサポートされているデータ型の場合) または暗黙的に (文字列に) 日付に変換することです。

ANSI 標準の方法は、次のようなことです。

select extract(year from jobs.DateCompleted),
       extract(month from jobs.DateCompleted),
       extract(day from jobs.DateCompleted),
. . .
group by extract(year from jobs.DateCompleted),
       extract(month from jobs.DateCompleted),
       extract(day from jobs.DateCompleted)

しかし、誰もそれをしません。最近のバージョンの SQL Server では、cast(jobs.DateCompleted as date). MySQL では、date(jobs.DateCompleted). オラクルでは、私はそうしますto_char(jobs.DateCompleted, 'YYYY-MM-DD')

于 2012-12-04T15:20:00.967 に答える
0

時間の部分を取り除く式を作成し、この式でグループ化します... Ms SQL Server で使用できるDateAdd(dd, datediff(dd, 0, myDatetime), 0) 各 RDBMS には、これに対する独自の関数または構文があります。Ms SQLServer については、この SO の質問を参照してください

于 2012-12-04T15:18:08.673 に答える