【发布时间】:2019-11-19 10:44:05
【问题描述】:
我有一种情况,我必须计算一年中每个月的“总计”,并且我必须在保持日期的日期时间格式的同时显示一年中每个月的总计。我正在编写以下查询:
SELECT [DATE_FORMATION], sum(CO) CO, sum(Total_Members) Total_Members
from (
select convert(varchar(7),CAST([DATE_FORMATION] AS DATE),126) as [DATE_FORMATION],
count([CO_ID]) as CO,
sum(convert(int,[TOTAL_MEMBERS])) as Total_Members
from COCores
where cast([DATE_FORMATION] as date) >= Dateadd(Month, Datediff(Month, 0, DATEADD(m, -10, current_timestamp)), 0)
group by [DATE_FORMATION]
) tmp
group by [DATE_FORMATION]
它给出了我需要的准确答案
但问题是它以“Varchar”格式生成日期,而我需要以日期时间格式生成日期,以便我可以进一步使用它。如何在保持日期时间格式的日期并获得相同结果的同时获得此结果。
【问题讨论】:
-
MySQL 是具有不同语法的不同产品。至于日期,它们没有格式,它们是二进制值。格式仅适用于将字符串解析为日期,将日期格式化为字符串。不要将日期存储为字符串。使用正确的类型,
date。当你想生成字符串时,使用CONVERT或FORMAT生成你想要的字符串 -
数字也是如此。您不必将
TOTAL_MEMBERS转换为数字,它应该是一个以数字开头的数字 -
您是否尝试过将日期转换为 Select Convert(DateTime,Date_Formation) as Date_Formation
-
@SyedWahhab OP 已经在这样做了。 这是开始的错误
-
@Sadia 你想要什么样的输出做?您的代码明确截断了一天部分。你想展示什么?
标签: sql sql-server datetime