我有一个表OrderDate
,其中Qty
是一个带有时间戳值的varchar列,是否可以获得每天,每周,每月或每年的---------------------------------------
|idOrder | idProduct | Qty | OrderDate|
---------------------------------------
| 1 | 5 | 20 | 1504011790 |
| 2 | 5 | 50 | 1504015790 |
| 3 | 5 | 60 | 1504611790 |
| 4 | 5 | 90 | 1504911790 |
-----------------------------------------
?
表格如下:
------------------------------
| idProduct | Qty | OrderDate|
-------------------------------
| 5 | 70 | 08/29/2017|
| 5 | 60 | 09/05/2017|
| 5 | 90 | 09/08/2017|
-------------------------------
我想要这样的东西
#load "..\shared\order.csx"
using System;
public static void Run(Order myQueueItem, out Order outputQueueItem,TraceWriter log)
{
log.Info($"C# Queue trigger function processed order...");
log.Info(myQueueItem.ToString());
outputQueueItem = myQueueItem;
}
答案 0 :(得分:2)
看起来你想在这里做两件事:第一组由你的idProduct和OrderDate
dateadd(s,[your time field],'19700101')
这将为您提供所需的金额。接下来,您要转换时间格式。我假设你的邮票是在大纪元时间(从1970年1月1日起的秒数)所以转换它们采取以下形式:
convert(NVARCHAR, [date],101)
看起来您还希望将日期格式化为mm / dd / yyyy。
select idProduct, sum(Qty), convert(NVARCHAR,dateadd(s,OrderDate,'19700101'), 101)
from [yourtable]
group by idProduct, OrderDate
是完成该
在一起:
original_grad = (actual gradient computed by TF)
答案 1 :(得分:1)
不幸的是,TSQL TIMESTAMP数据类型并不是真正的日期。根据{{3}}他们甚至更改了名称,因为它是如此用词不当。使用DEFAULT = GETDATE()创建DATETIME字段要好得多,以便准确记录创建行的时间。
话虽这么说,我见过的最高效的方式是追踪日期/周/月/季/等。是使用仅列出每个日期的日期维度表,并具有WeekOfMonth和DayOfYearand等字段。一旦您将新的DateCreated字段加入其中,您就可以获得有关该日期的各种信息。您可以使用谷歌脚本为您创建日期维度表。
答案 2 :(得分:0)
是的,非常简单:
TRUNC ( date [, format ] )
格式可以是:
TRUNC(TO_DATE('22-AUG-03'), 'YEAR')
Result: '01-JAN-03'
TRUNC(TO_DATE('22-AUG-03'), 'MONTH')
Result: '01-AUG-03'
TRUNC(TO_DATE('22-AUG-03'), 'DDD')
Result: '22-AUG-03'
TRUNC(TO_DATE('22-AUG-03'), 'DAY')
Result: '17-AUG-03'