zoukankan      html  css  js  c++  java
  • SQLServer学习笔记<>日期和时间数据的处理(cast转化格式、日期截取、日期的加减)和 case表达式

    日期和时间数据的处理。

    (1)字符串日期

    ‘20080301’,这一串为字符串日期,但必须保证为四位的年份,两位的月份,两位的日期。例如,查询订单表日期大于‘20080301’。可以这样写:

    1  select * from sales.orders
    2  where orderdate>'20080301'

    结果如图所示:

    (2)cast进行转化。例如,可以讲‘20080301’转化为时间类型。其结果跟上图一样。

    1  select * from sales.orders
    2  where orderdate>cast('20080301' as datetime)

    (3)datepart,截取日期中的某一段,year代表截取年,month代表截取月份,day代表截取日期。等等。。。。。

    例如:截取当前时间的某一部分。

    1  select datepart(year,getdate()) as N'年份',
    2         datepart(month,getdate()) as N'月份',
    3         datepart(day,getdate()) as N'日',
    4         datepart(hour,getdate()) as N'时',
    5         datepart(minute,getdate()) as N'分',
    6         datepart(second,getdate()) as N'秒'

    结果如图:

    (4)特殊日期截取部分,例如:

    1   select datepart(dayofyear,getdate()) as N'一年中的第几天',
    2         datepart(weekday,getdate()) as N'一星期中第几天',
    3         datepart(week,getdate()) as N'今年的第几周'

    结果如图:

    (5)日期的加减。dateAdd(增长单位(年、月、日),步长(增长多少),基数),datediff(单位,步长,基数)。

    例如:当前日期加20天是多少?算一算我深爱的祖国建国多久?本屌丝今年多大?

    1  select dateadd(day,20,getdate()) as N'20天后的是什么日子',
    2         datediff(year,'19491001',getdate()) as N'祖国成立这么多年啦',
    3         datediff(year,'19911002',getdate()) as N'屌丝多大啦'

    (6)cast与convert,两者都能讲字符串或者其他形式的转化为指定的类型。不同的是:convert转化时可以指定转化的样式,cast则直接转化。

    例如:

    1  select convert(nvarchar,getdate(),112) as N'转化后的形式',
    2        left( convert(nvarchar,getdate(),112),6) as N'取出年月'

    结果如图:

    case表达式

    (1)简单表达式,例如,要查询雇员表里面地区(region)为WA的用“华盛顿地区”代替表示。

    1  select firstname,lastname,
    2  case region
    3  when 'WA' then '华盛顿地区'
    4  else '其他地区'
    5  end
    6  from hr.employees

    (2)搜索表达式,在这里我们先查询下雇员表(hr.employees里面的信息。

    1  select firstname,lastname,region
    2  from hr.employees

    假如对于region为null的地区,我们想用“未知地区”来表达,该怎么写了?此时就需要用到搜索表达式,可以这样写:

    1  select firstname,lastname,
    2  case when region ='WA' then '华盛顿地区'
    3       when region is null then '未知地区'
    4  else '其他地区'
    5  end
    6  from hr.employees

    结果如图所示:

  • 相关阅读:
    洛谷P1586 四方定理
    洛谷P3807 【模板】卢卡斯定理exgcd
    扩展中国剩余定理详解
    HDU 1573 X问题
    POJ 2891 Strange Way to Express Integers
    中国剩余定理详解
    java.lang.UnsupportedClassVersionError: Bad version number in .class file 解决方案
    MySQL对于有大量重复数据表的处理方法
    【一牛鸣】下周或触发新变盘9.16
    Django里面的RequestContext
  • 原文地址:https://www.cnblogs.com/zzt-lovelinlin/p/4479515.html
Copyright © 2011-2022 走看看