我有一个包含以下内容的表:
DataDate Value
2010-03-01 08:31:32.000 100
2010-03-01 08:31:40.000 110
2010-03-01 08:31:42.000 95
2010-03-01 08:31:45.000 101
. .
. .
. .
Run Code Online (Sandbox Code Playgroud)
我需要将值列乘以当前行和上一行之间的时间差,并将整数日的总和相乘.
我目前将数据设置为每10秒进行一次,这使得查询中的转换变得简单:
SELECT Sum((Value/6) FROM History WHERE DataDate BETWEEN @startDate and @endDate
Run Code Online (Sandbox Code Playgroud)
@startDate和@endDate今天的日期是00:00:00和11:59:59.
在我设置每10秒收集的数据之前,只要值发生变化,就会收集数据.时间方面没有重复条目,最小时差为1秒.
当我不知道读数之间的时间间隔时,如何设置查询以获取行之间的行时间?
我正在使用SQL Server 2005.
我有一个包含EquipmentID列表的表和另一个包含维护记录的表.
当用户编辑维护记录时,我希望有一个表格中所有设备ID的下拉列表.
下拉列表会填充,并填充正确数量的条目,但是它们都会说System.Web.MVC.SelectListItem而不是ID的值.
以下是生成列表的代码:
public ActionResult Edit(int id)
{
MaintPerformed maintPerformed = maintPerformedRepository.GetMaintPerformed(id);
IList<EquipmentID> IDs = equipmentIDRepository.GetEquipmentIDAsList();
IEnumerable<SelectListItem> selectEquipList =
from c in IDs
select new SelectListItem
{
//Selected = (c.EquipID == maintPerformed.EquipID),
Text = c.EquipID,
Value = c.Sort.ToString()
};
ViewData["EquipIDs"] = new SelectList(selectEquipList, maintPerformed.ID);
return View(maintPerformed);
}
Run Code Online (Sandbox Code Playgroud)
以下是下拉列表的.aspx页面中的条目:
%: Html.DropDownList("EquipIDs") %>
Run Code Online (Sandbox Code Playgroud)
以下是我从表中生成列表的方法:
public List<EquipmentID> GetEquipmentIDAsList()
{
return db.EquipmentIDs.ToList();
}
Run Code Online (Sandbox Code Playgroud)
除了分配要在下拉框中显示的文本外,一切都正常工作.
我错过了什么或没有正确思考?
我使用openrowset将csv文件导入SQL Server.csv文件中的一列包含科学记数法(1.08E + 05)中的数字以及正在插入的表中的列
默认情况下,它将值导入为1并忽略.08E + 05.
我已经尝试使用cast()和convert()在执行查询时直接转换值,并在表中将数据类型设置为字符串并将其导入.所有这些方法都具有相同的行为,其中.08E + 05被忽略.
有没有办法让值导入为108000而不是没有.08E + 05的1而不必更改csv文件本身?
将数据类型设置为varchar并读入csv文件似乎与以下代码具有相同的效果:
CREATE TABLE #dataTemp (StartDate datetime, Value varchar(12))
SET @insertDataQuery = 'SELECT Date, CSVValue from OpenRowset(''MSDASQL'', ''Driver={Microsoft Text Driver (*.txt; *.csv)}; DefaultDir='
SET @insertDataQuery = @insertDataQuery + 'C:\Data\;'',''SELECT * FROM '+ '11091800.csv' + ''')'
INSERT INTO #dataTemp EXEC(@insertDataQuery)
SELECT * FROM #dataTemp
Run Code Online (Sandbox Code Playgroud)
并非CSV文件中的所有值都具有科学记数法,没有它的值,例如81000没有问题.
我将日期时间存储在 SQL Server 2005 的表中,格式如下:
2012-04-16 00:00:00.000
Run Code Online (Sandbox Code Playgroud)
我需要在查询结果中获取 2012 年 4 月 16 日 00:00:00 格式的日期。
这样做的最佳方法是什么?