我试图按照日期格式的stackoverflow讨论中的示例,它非常适用于页面只有一个日期字段.但是,如果页面上有多个日期字段,则似乎只会设置第一个日期字段/ ng-model,甚至会选择其他日期字段.
以下是HTML模板代码:
<div class="input-append" my-Datepickerloaded>
<input type="text" ng-model="user.StartDate" my-Datepickerformater></input>
<span class="add-on">
<i data-time-icon="icon-time" data-date-icon="icon-calendar">
</i>
</span>
</div>
<div class="input-append" my-Datepickerloaded>
<input type="text" ng-model="user.EndDate" my-Datepickerformater></input>
<span class="add-on">
<i data-time-icon="icon-time" data-date-icon="icon-calendar">
</i>
</span>
</div>
Run Code Online (Sandbox Code Playgroud)
这是指令代码(myDatePickerformater):
return {
require: '^ngModel',
restrict: 'A',
link: function (scope, elm, attrs, ctrl) {
var moment = $window.moment,
dateFormat = 'MM/DD/YYYY';
attrs.$observe('myDatepickerformater', function (newValue) {
ctrl.$modelValue = new Date(ctrl.$setViewValue);
});
ctrl.$formatters.unshift(function (modelValue) {
scope = scope;
if (!dateFormat || !modelValue) return …Run Code Online (Sandbox Code Playgroud) 假设我有一个非常长的表(约3500万行),名为TimeCard,只有5列(tableID,CompanyID,UserID,ProjectID,DailyHoursWorked,entryDate).这是一个非常直接的表格,记录员工每个公司每个项目每天的工作时间.
我现在需要生成一份报告,以了解员工每个项目每个月的总工时数.我希望构建一个类似于表的数据结构,而不是执行报表运行时所需的聚合,我希望按月汇总所有公司/项目/用户数据,因此当报表运行时,我可以直接查询该数据结构没有执行任何运行时聚合,因为~3500万条记录可能需要几分钟.
所以我有两种不同的方式.一个创建一个额外的物理表(CompanyID,UserID,ProjectID,MonthlyHoursWorked,Month)作为我的列,只需在TimeCard表中使用trigger来修改额外表中的值.或者我可以创建索引视图.所以我试过了两个.我首先使用以下代码尝试了索引视图:
CREATE VIEW [dbo].[vw_myView] WITH SCHEMABINDING AS
SELECT
JobID,
ProjectID,
Sum(DailyHoursWorked) AS MonthTotal,
DATEADD( Month, DATEDIFF( Month, 0, entryDate), 0 ) AS entryMonth,
CompanyID,
COUNT_BIG(*) AS Counter
FROM
dbo.TimeCard
Group By DATEADD( Month, DATEDIFF( Month, 0, entryDate ), 0 ), JobID, ProjectID, CompanyID
Go
CREATE UNIQUE CLUSTERED INDEX [IX_someIndex] ON [dbo].[vw_myView]
(
[CompanyID] ASC,
[entryMonth] ASC,
[UserID] ASC,
[ProjectID] ASC
)
Run Code Online (Sandbox Code Playgroud)
索引视图正确创建,总计约500万行.
但是,每次如果我清除SQL缓存,并运行以下查询:*select*from vw_myView where companyID = 1*,则需要将近3分钟.如果我按照上面提到的那样使用额外的表路由,清除了我的缓存,大约需要4秒钟.
我的问题是,索引查看这个特定场景的错误选择吗?特别是我有兴趣知道每次更改基础表(TimeCard)或对其运行查询时是否重新计算/重新聚合整个索引视图?
谢谢!