我有我們的時區表日期時間兩列,考慮到夏令時,夏令時c標誌。我按順序排列所有日期(按日期排序),並按順序排序,從夏季到冬季更改時間(按國旗desc,datetime排序)。因爲我希望按日期時間查看選擇順序,但是通過標誌desc,datetime改變時間順序。我可以做一個查詢沒有存儲過程,遊標,視圖?SQL與排序的問題
0
A
回答
0
我理解你的例子如下:
按日期排序(不是時間)上升。
大多數日子 - 時間asecending
10/31(和IM春季猜測在一起?) - 標誌C遞減,時間ascendng
ORDER BY DATE(datefield), (CASE DATEPART(dy, datefield) WHEN '10/31' THEN c DESC, TIME(datefield) ELSE TIME(datefield) END)
凡DATEPART(DY,X),是日期TSQL沒有一年。如果我錯了,或者你想讓它通用,你可以在MONTH和DAY之間做CONCAT等等。
在「大多數日子」的情況下,您留下了一些解釋空間(因爲在您的示例中,所有帶有國旗的日期時間嚴格大於沒有日期的日期)。但你可以改變但是你需要
(TIME功能作出任何功能上的區別,因爲我們知道日期是平等的,只要這種比較的問題。我把他們的清晰度)
0
的SELECT * FROM一個給我這樣的事情:
2010-03-28 00:47:42 0
2010-03-28 01:27:42 0
2010-03-28 03:17:42 1
2010-03-28 05:20:42 1
2010-03-28 07:20:42 1
2010-10-31 00:35:20 1
2010-10-31 01:10:20 1
2010-10-31 02:04:20 0
2010-10-31 02:05:20 0
2010-10-31 02:07:20 0
2010-10-31 02:09:20 0
2010-10-31 02:10:20 1
2010-10-31 02:13:20 0
2010-10-31 02:18:20 0
2010-10-31 02:20:20 1
2010-10-31 02:40:20 1
2010-10-31 03:24:20 0
2010-12-01 11:08:19 0
我希望看到這樣的事情:
2010-03-28 00:47:42 0
2010-03-28 01:27:42 0
2010-03-28 03:17:42 1
2010-03-28 05:20:42 1
2010-03-28 07:20:42 1
2010-10-31 00:35:20 1
2010-10-31 01:10:20 1
2010-10-31 02:10:20 1
2010-10-31 02:20:20 1
2010-10-31 02:40:20 1
2010-10-31 02:04:20 0
2010-10-31 02:05:20 0
2010-10-31 02:07:20 0
2010-10-31 02:09:20 0
2010-10-31 02:13:20 0
2010-10-31 02:18:20 0
2010-10-31 03:24:20 0
2010-12-01 11:08:19 0
+0
這兩個列表之間的區別究竟是什麼?他們看起來和我一樣...... – 2010-12-07 05:58:22
0
基本上,你需要規範的時間;下面的ORDER BY子句刪除與夏令時相關的小時。如果您的DST式柱其實是有點,你可能需要將其轉換爲TINYINT(無論是在設計還是內嵌在ORDER BY子句來完成這項工作。
使用tempdb
DECLARE @T TABLE (dt DATETIME, c tinyint)
INSERT INTO @t
VALUES ('2010-03-28 00:47:42', 0)
,('2010-03-28 01:27:42', 0)
,('2010-03-28 03:17:42', 1)
,('2010-03-28 05:20:42', 1)
,('2010-03-28 07:20:42', 1)
,('2010-10-31 00:35:20', 1)
,('2010-10-31 01:10:20', 1)
,('2010-10-31 02:04:20', 0)
,('2010-10-31 02:05:20', 0)
,('2010-10-31 02:07:20', 0)
,('2010-10-31 02:09:20', 0)
,('2010-10-31 02:10:20', 1)
,('2010-10-31 02:13:20', 0)
,('2010-10-31 02:18:20', 0)
,('2010-10-31 02:20:20', 1)
,('2010-10-31 02:40:20', 1)
,('2010-10-31 03:24:20', 0)
,('2010-12-01 11:08:19', 0)
SELECT Dt, c
FROM @t
ORDER BY DATEADD(HOUR, -c, Dt)
相關問題
- 1. SQL排序問題
- 2. 排序問題的T-SQL
- 3. SQL ROW_NUMBER和排序問題
- 4. LINQ到SQL排序問題
- 5. ORACLE SQL排序問題
- 6. SQL排序查詢問題
- 7. WebSecurity.CreateUserAndAccount SQL排序問題
- 8. SQL排序規則問題
- 9. Sql查詢排序問題
- 10. 問題與排序數據
- 11. Dir.glob與排序問題
- 12. 排序問題與視圖
- 13. JTable與jgoodies排序問題
- 14. SQL排序/分頁問題問
- 15. 有趣的SQL排序問題
- 16. 簡單的SQL排序問題
- 17. LINQ排序排序問題
- 18. mysql的排序問題與ORDER BY
- 19. 與jquery tablesorter排序日期的問題
- 20. 排序問題..
- 21. 排序問題?
- 22. 排序問題
- 23. 排序問題
- 24. 排序問題
- 25. 問題排序
- 26. 排序問題
- 27. 排序問題?
- 28. 排序問題使用SQL變量
- 29. LINQ到SQL動態排序問題
- 30. SQL按日期排序問題
在天春天一切正常我在微軟的SQL服務器上沒有一個日期()函數也在'順序'的情況下,在t-sql語法很難理解爲我。在desc以後,以防萬一結束是必要的。更改存儲在數據庫中的天(這只是11月的最後一個星期日,我不能認爲t-sql中的表達式和我創建表)。我可以在什麼時候查詢? – Xaver 2010-12-07 06:51:28