SQL:一个月内的总天数

时间:2015-05-13 04:13:44

标签: sql sql-server sql-server-2008 tsql

我有以下公式:

"Value1" * 100 * "Total day in a month" * "Value2"

我有下表:

ID     Date        Time     Value1     Value2
1      2014-01-01  00:00    10         20
2      2014-01-01  01:00    20         5

我想只使用一个Year参数来选择一年中的数据 如何将公式应用于查询?

结果应为:

ID     Date        Time     Value1     Value2   TotalDayinMonth   Result
1      2014-01-01  00:00    10         20       31                620000
2      2014-01-01  01:00    20         5        31                310000
ff.   

4 个答案:

答案 0 :(得分:4)

您可以像这样获得给定日期的天数:

DECLARE @date DATETIME = '2014-01-01'
SELECT DATEDIFF(DAY, @date, DATEADD(MONTH, 1, @date))

查询:

SELECT  ID
        ,[Date]
        ,[Time]
        ,Value1
        ,Value2
        ,DATEDIFF(DAY, [Date], DATEADD(MONTH, 1, [Date])) AS TotalDayinMonth
        ,Value1 * 100 * DATEDIFF(DAY, [Date], DATEADD(MONTH, 1, [Date])) * Value2 AS Result
FROM yourTable

答案 1 :(得分:1)

此表达式将为您提供date所在月份的天数,无论它是在哪一天:

datediff(day,
  dateadd(month,datediff(month, 0, date),0),
  dateadd(month,datediff(month, 0, date)+1,0))

答案 2 :(得分:1)

检查这个答案。您可以使用SQL的EOMONTHDAY函数来获取一个月内的天数。

SELECT  ID
        ,[Date]
        ,[Time]
        ,Value1
        ,Value2
        ,DAY(EOMONTH(Date)) AS TotalDaysInMonth
        ,Value1 * 100 * DAY(EOMONTH(Date)) * Value2 AS Result
FROM TABLENAME

答案 3 :(得分:0)

你也可以检查一下。

>> ST=stran(x);
>> plot(abs(ST))
相关问题