特别说明哦:我的日志都是自己写的,完全是自己写的,完全没有转载的,可别以为我是转载的哦
这里的文章除特别说明的以外,全部使用《知识共享 署名-非商业性使用-相同方式共享 2.5 中国大陆许可协议》进行许可,不可以盗用哦

每小时生成一个随机序列的SQL查询

| |
[阴 2008年5月3日 19:21 | by gs ]

其实很简单,通过Sin函数和DateDiff函数就可以实现了

SELECT TOP 10 * FROM yt_fanfic_article ORDER BY SIN(id+DATEDIFF(HH,'2000-1-1',GetDate()))

DateDiff(HH,'2000-1-1',GetDate())返回一个值,这个值等于2000年1月1日到现在经历的小时数,显然,这个值每小时会+1
接着加上一个id,这是记录的编号,以增大随机性
最后计算Sin就可以了,得出来的结果是-1到+1之间的一个小数,每一条记录都会有自己的值,而这个值可以根据小时变化,这样就产生随机序列了

该SQL语句用于YT同人栏目首页的随机文章列表
本SQL语句仅在达梦数据库上测试通过,其他数据库没测试过。不过据猜测不能兼容其他数据库,因为似乎任何两个数据库系统的DateDiff函数的参数都不同…… 总之原理就是这样,针对不同的数据库写不同的就行了,当然通用性就……



请给这篇日志评个分吧!
  • Currently 4/9
  • 1
    -4
  • 2
    -3
  • 3
    -2
  • 4
    -1
  • 5
    0
  • 6
    1
  • 7
    2
  • 8
    3
  • 9
    4

现在的分数: 4 分,共2个评分

Tags: , ,
网页开发 | 评论(0) | 引用(0) | 阅读(680)