小编ama*_*rcy的帖子

计算两行之间的时差

我有一个包含以下内容的表:

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.

database sql-server difference-between-rows

46
推荐指数
2
解决办法
8万
查看次数

Asp.Net MVC 2 Dropdown显示System.Web.MVC.SelectListItem

我有一个包含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)

除了分配要在下拉框中显示的文本外,一切都正常工作.

我错过了什么或没有正确思考?

asp.net-mvc

10
推荐指数
1
解决办法
7468
查看次数

使用OpenRowSet导入.CSV文件时,将科学记数法转换为浮点数

我使用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 scientific-notation openrowset

9
推荐指数
3
解决办法
3万
查看次数

SQL Server 2005 日期格式 [DD-Mon-YY hh:mm:ss]

我将日期时间存储在 SQL Server 2005 的表中,格式如下:

 2012-04-16 00:00:00.000
Run Code Online (Sandbox Code Playgroud)

我需要在查询结果中获取 2012 年 4 月 16 日 00:00:00 格式的日期。

这样做的最佳方法是什么?

datetime sql-server-2005

4
推荐指数
1
解决办法
7955
查看次数