标签: datetime-generation

实体框架/ SQL2008 - 如何自动更新实体的LastModified字段?

如果我有以下实体:

public class PocoWithDates
{
   public string PocoName { get; set; }
   public DateTime CreatedOn { get; set; }
   public DateTime LastModified { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

这对应于具有相同名称/属性的SQL Server 2008表...

我怎么能自动:

  1. 将记录的CreatedOn/LastModified字段设置为现在(执行INSERT时)
  2. 将记录的LastModified字段设置为现在(执行UPDATE时)

当我自动说,我的意思是我希望能够做到这一点:

poco.Name = "Changing the name";
repository.Save(); 
Run Code Online (Sandbox Code Playgroud)

不是这个:

poco.Name = "Changing the name";
poco.LastModified = DateTime.Now;
repository.Save();
Run Code Online (Sandbox Code Playgroud)

在幕后,"某事"应该自动更新日期时间字段.什么是"东西"?

我正在使用Entity Framework 4.0 - 有没有一种方法可以让EF为我自动执行此操作?(EDMX中的特殊设置可能?)

从SQL Server端,我可以使用DefaultValue,但这只适用于INSERT(不是UPDATE).

类似地,我可以使用POCO上的构造函数设置默认值,但这只会在实例化对象时起作用.

当然我可以使用触发器,但它并不理想.

因为我正在使用Entity Framework,我可以挂钩到SavingChanges事件并在这里​​更新日期字段,但问题是我需要"了解"POCO(目前,我的存储库是用泛型实现的).我需要做一些OO技巧(比如让我的POCO实现一个接口,然后调用一个方法).我并不反对,但如果我必须这样做,我宁愿手动设置字段.

我基本上在寻找SQL Server …

.net c# sql-server-2008 entity-framework-4 datetime-generation

41
推荐指数
4
解决办法
2万
查看次数

MySQL GROUP BY DateTime +/- 3秒

假设我有一个包含3列的表:

  • id(PK,int)
  • 时间戳(日期时间)
  • 标题(文字)

我有以下记录:

1, 2010-01-01 15:00:00, Some Title
2, 2010-01-01 15:00:02, Some Title
3, 2010-01-02 15:00:00, Some Title
Run Code Online (Sandbox Code Playgroud)

我需要做一个彼此在3秒内的GROUP BY记录.对于此表,第1行和第2行将组合在一起.

这里有一个类似的问题: Mysql DateTime组15分钟

我也发现了这个:http: //www.artfulsoftware.com/infotree/queries.php#106

我不知道如何将这些方法转换为可以工作几秒钟的方法.在SO问题上方法的问题在于,在我看来它只适用于落在从已知点开始的时间仓内的记录.例如,如果我FLOOR()以秒为单位工作,间隔为5秒,则15:00:04的时间将与15:00:01分组,但不会与15:00:06分组.

这有意义吗?如果需要进一步说明,请与我们联系.

编辑:对于一组数字,{1,2,3,4,5,6,7,50,51,60},似乎最好将它们分组{1,2,3,4,5, 6,7},{50,51},{60},以便每个分组行取决于行是否在前一个3秒内.我知道这会改变一些事情,对不起,我很抱歉.

我试图模糊匹配来自不同服务器的日志.服务器#1可以记录项目"项目#1",服务器#2将在服务器#1的几秒内记录相同的项目"项目#1".我需要在两个日志行上做一些聚合函数.不幸的是,由于服务器软件的性质,我只有标题可以继续.

mysql sql group-by datetime-generation

15
推荐指数
2
解决办法
8310
查看次数

如何在PostgreSQL中生成一个虚拟表来生成一系列日期?

我想生成一个日期列表,希望加入另一个表,但我不知道使用什么语法,类似于这个:

SELECT dates.date, transactions.account_id, transactions.amount
  FROM (...) as dates
       LEFT JOIN transactions ON transactions.date = dates.date
 WHERE dates.date >= '2010-01-01' AND dates.date <= '2010-12-31'
 ORDER BY dates.date;
Run Code Online (Sandbox Code Playgroud)

我想要日期,所以我没有必要进一步按摩数据客户端.我用它来显示一个类似于这样的表:

Account    2010-01-01    2010-01-02    2010-01-03    Balance
============================================================
Chase 123        +100           -20           -70        +10
Chase 231                       +13            -9         +4
Run Code Online (Sandbox Code Playgroud)

sql postgresql datetime-generation

11
推荐指数
1
解决办法
5976
查看次数

按日期分组,即使没有找到记录也返回行

我有一个查询,它将表中的所有条目分组,并按日期时间列对它们进行分组.这一切都很有效:

SELECT SUM(  `value` ) AS  `sum` , DATE(`datetime`) AS  `dt``
FROM  `entry` 
WHERE entryid = 85
AND DATETIME BETWEEN  '2010-01-01' AND '2010-03-01'
GROUP BY `dt`
ORDER BY `datetime`
Run Code Online (Sandbox Code Playgroud)

问题是,我需要它返回一行,即使没有找到任何东西,值设置为0.我假设有一些MYSQL函数将处理这个但似乎无法找到它.

谢谢!

mysql sql group-by date datetime-generation

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

MySQL计算过去7天的数据

我有以下架构.

表投票

+------------------+--------------+------+-----+---------------------+----------------+
| Field            | Type         | Null | Key | Default             | Extra          |
+------------------+--------------+------+-----+---------------------+----------------+
| id               | int(10)      | NO   | PRI | NULL                | auto_increment |
| aid              | varchar(10)  | NO   |     |                     |                |
| ip               | varchar(100) | NO   |     |                     |                |
| host             | varchar(200) | NO   |     |                     |                |
| timestamp        | varchar(20)  | NO   |     | 0000-00-00 00:00:00 |                |
| user             | tinytext     | NO   |     | …
Run Code Online (Sandbox Code Playgroud)

mysql sql datetime-generation

3
推荐指数
1
解决办法
2662
查看次数

获得字段总和

可能重复:
过去7天的MySQL计数数据

我有一个问题,我需要显示字段的总和.可以说我有一个记录集如下,

detectDate      |isp    |infection  | count
--------------------------------------
2012-10-02 01:00|aaaa   |malware    |3
2012-10-02 01:30|bbbb   |malware    |2
2012-10-02 01:33|bbbb   |spy-eye    |2
2012-10-02 01:45|aaaa   |DDos       |1
2012-10-03 01:50|cccc   |malware    |2
2012-10-03 02:00|dddd   |TDSS       |2
2012-10-03 04:50|dddd   |TDSS       |3
Run Code Online (Sandbox Code Playgroud)

我想显示一个输出,它将显示每天所有感染的总和,如下所示,

detectDate  |infection  | count
-------------------------------
2012-10-02  |DDos       |1
2012-10-02  |malware    |5
2012-10-02  |spy-eye    |2
2012-10-02  |TDSS       |0
2012-10-03  |DDos       |0
2012-10-03  |malware    |2
2012-10-03  |spy-eye    |0
2012-10-03  |TDSS       |5
Run Code Online (Sandbox Code Playgroud)

我用过这个查询,

SELECT DATE_FORMAT( detectDate, '%Y-%m-%d' ) AS detectDate, infection, SUM( count )
FROM …
Run Code Online (Sandbox Code Playgroud)

mysql sql datetime-generation

3
推荐指数
1
解决办法
113
查看次数