我有我们的时区表日期时间两列,考虑到夏令时,夏令时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