zoukankan      html  css  js  c++  java
  • sql中对时间进行操作

    sql中对时间进行操作,需要掌握四个时间函数:dateadd,datediff,datepart,datename

    dateadd是在指定日期上相加或相减一个时间。
    如:在指定日期添加3天select dateadd(day,3,'2010-05-06'),返回的结果2010-05-09。

    datediff是返回两个指定日期相隔的日期时间参数。
    如:select dateadd(day,'2010-05-09','2010-05-06'),返回的结果是3。

    datepart是返回指定日期的指定日期参数部分。
    如:select datepart(day,'2010-05-06'),返回的结果是6。

    datename返回指定日期的指定日期参数部分的字符串,他和datepart是有区别的,主要在week和weekday上面。
    如:select datename(weekday, '2010-05-06'),返回的结果是星期四。
    如下列结果列出指定日期在本年第多少周,当天是周几:
    select 本年第多少周=datename(week,'2010-05-06'),今天是周几=datename(weekday,'2010-05-06')

    以下代码值的收藏,关于时间日期格式,时间日期转换参数:
    select CONVERT(varchar, getdate(), 120 ) /*结果:2010-05-06 17:16:28*/

    select replace(replace(replace(CONVERT(varchar, getdate(), 120 ),'-',''),' ',''),':','')/*结果:20100506171628*/

    select CONVERT(varchar(12) , getdate(), 111 ) /*结果:2010/05/06*/

    select CONVERT(varchar(12) , getdate(), 112 ) /*结果:20100506*/

    select CONVERT(varchar(12) , getdate(), 102 ) /*结果:2010.05.06*/

    select CONVERT(varchar(12) , getdate(), 101 ) /*结果:05/06/2010*/

    select CONVERT(varchar(12) , getdate(), 103 ) /*结果:06/05/2010*/

    select CONVERT(varchar(12) , getdate(), 104 ) /*结果:06.05.2010*/

    select CONVERT(varchar(12) , getdate(), 105 ) /*结果:06-05-2010*/

    select CONVERT(varchar(12) , getdate(), 106 ) /*结果:06 05 2010*/

    select CONVERT(varchar(12) , getdate(), 107 ) /*结果:05 06, 2010 */

    select CONVERT(varchar(12) , getdate(), 108 ) /*结果:17:20:09*/

    select CONVERT(varchar(12) , getdate(), 109 ) /*结果:05  6 2010  */

    select CONVERT(varchar(12) , getdate(), 110 ) /*结果:05-06-2010*/

    select CONVERT(varchar(12) , getdate(), 113 ) /*结果:06 05 2010 1*/

    select CONVERT(varchar(12) , getdate(), 114 ) /*结果:17:19:44:123*/


    相个时间日期的大小比较一般可以使用大于小于等于号。
    如:select twRefundPrice from  twChangeRefund where Sdate <= getdate() and Edate >=getdate()

    下面列举一些比较经典的实例,更深入理解sql中时间日期操作:

    计算一个月第一天的SQL 脚本:SELECT DATEADD(mm, DATEDIFF(mm,0,getdate()), 0)
    解释:DATEDIFF(mm,0,getdate())是计算当前日期和“1900-01-0100:00:00.000”这个日期之间的月数。记住:时期和时间变量和毫秒一样是从“1900-01-01 00:00:00.000”开始计算的。

    本周的星期一:SELECT DATEADD(wk, DATEDIFF(wk,0,getdate()), 0)
    一年的第一天:SELECT DATEADD(yy, DATEDIFF(yy,0,getdate()), 0)
    季度的第一天:SELECT DATEADD(qq, DATEDIFF(qq,0,getdate()), 0)
    当天的半夜:SELECT DATEADD(dd, DATEDIFF(dd,0,getdate()), 0)
    上个月的最后一天:SELECT dateadd(ms,-3,DATEADD(mm, DATEDIFF(mm,0,getdate()), 0))
    去年的最后一天:SELECT dateadd(ms,-3,DATEADD(yy, DATEDIFF(yy,0,getdate()), 0))
    本月的最后一天:SELECT dateadd(ms,-3,DATEADD(mm, DATEDIFF(m,0,getdate())+1, 0))
    本年的最后一天:SELECT dateadd(ms,-3,DATEADD(yy, DATEDIFF(yy,0,getdate())+1, 0))
    本月的第一个星期一:select DATEADD(wk, DATEDIFF(wk,0,dateadd(dd,6-datepart(day,getdate()),getdate())), 0)

    作者:返回主页 linux运维-loring
    出处:http://www.cnblogs.com/zlf344242525/
    本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
    如果文中有什么错误,欢迎指出。以免更多的人被误导。
  • 相关阅读:
    python高级之操作数据库
    算法之矩阵计算斐波那契数列
    Mysql操作初级
    python高级之生成器&迭代器
    python高级之装饰器
    python高级之多进程
    python高级之多线程
    操作系统IO模型
    python高级之网络编程
    python高级之面向对象高级
  • 原文地址:https://www.cnblogs.com/zlf344242525/p/2227251.html
Copyright © 2011-2022 走看看