2014-12-02 66 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