2014-12-02 62 views
2

我有一个按星期分组结果的查询。 为了确保一周一致的开始,我试图将第一行添加到Peta Poco db.Query(sql)方法中。如何在查询中设置DATEFIRST 1与PetaPoco查询或管理池连接

SET DATEFIRST 1 
SELECT 
    count(logDate) as Value, 
    dateadd(WEEK, datediff(WEEK,0, logDate),0) as [Date] 
FROM 
    ... etc ... 

没有SET DATEFIRST 1 PetaPoco产生类似...

exec sp_executesql N' 
       SELECT  
        count(logDate) as Value, 
        dateadd(WEEK, datediff(WEEK,0, logDate),0) as [Date] 
       FROM 
       ... etc ... 

随着SET DATEFIRST 1 PetaPoco产生类似...

exec sp_executesql N'SELECT [DataPoint].[Date], [DataPoint].[Value] FROM [DataPoint]  
       SET DATEFIRST 1 
       SELECT 
        count(logDate) as Value, 
        dateadd(WEEK, datediff(WEEK,0, logDate),0) as [Date] 
       FROM 
       ... etc ... 

如何解决此得到产生不正确的SQL? 从文档看来,只要它在同一个连接上执行,我就可以使用db.Execute("SET DATEFIRST 1");,但由于连接都是为我管理的,因此我是否需要执行任何操作以确保它与我的查询具有相同的连接?

回答

2

把分号作为第一个字符告诉PetaPoco如

db.Execute(";SET DATEFIRST 1 .... 
+0

感谢(无端的评论,以赚取帽子)来执行查询,我在这里很感激:-) – Myster 2014-12-15 03:38:11

+0

的注释为别人来到这里。我正在使用SQL生成器,并试图执行'await db.ExecuteAsync(“; SET DATEFIRST 1”);'然后我的查询,它将无法正常工作。我不得不首先在我的查询中使用的sql构建器上添加一个附录。 – 2017-12-05 03:53:47