zoukankan      html  css  js  c++  java
  • 常用语句

    以复习为目的吧,整理了自己以前在学习T-SQL时的 常用语句 下载

    获取当前日期时间

    1 select getdate()
    2 --结果:2012-07-12 06:20:58.670

    获取星期几

    ----返回table
    CREATE FUNCTION [dbo].[WeekDayName]
    (    
    )
    RETURNS @WeekDayName TABLE([Id] INT,[WeekDayName] NVARCHAR(15))
    AS
    BEGIN    
        INSERT INTO @WeekDayName ([Id],[WeekDayName]) VALUES (0,'Saturday'),(1,'Sunday'),(2,'Monday'),(3,'Tuesday'),(4,'Wednesday'),(5,'Thursday'),(6,'Friday')
        RETURN
    END
    ----返回名称
    CREATE FUNCTION [dbo].[WeekDayNameOfDate]
    (
      @Date DATETIME
    )
    RETURNS NVARCHAR(10)
    BEGIN
    RETURN
        CASE (DATEPART(dw, @Date) + @@DATEFIRST) % 7
        WHEN 0 THEN 'Saturday'
        WHEN 1 THEN 'Sunday'
        WHEN 2 THEN 'Monday'
        WHEN 3 THEN 'Tuesday'
        WHEN 4 THEN 'Wednesday'
        WHEN 5 THEN 'Thursday'
        WHEN 6 THEN 'Friday'    
      END
    END
    
    ----调用表值函数 select * from dbo.WeekDayName()
    ----调用标量值函数select dbo.WeekDayNameOfDate('2012-01-03')
    select getdate(),datename(weekday,getdate()),datepart(weekday,getdate())
    --datename 返回星期名称;
    --datepart 返回数值;
    --例子:
    select   
    case   datepart(dw,getdate()) 
    when   1   then   '星期天 ' 
    when   2   then   '星期一 ' 
    when   3   then   '星期二 ' 
    when   4   then   '星期三 ' 
    when   5   then   '星期四 ' 
    when   6   then   '星期五 ' 
    when   7   then   '星期六 ' 
    end

    下面是一些常用的关于时间日期的方法

      1 select getdate()
      2 --结果2011-10-23 11:06:23.390
      3 
      4 select datediff(yyyy,getdate(),'2011-01-01')
      5 select datediff(yyyy,getdate(),'2010-1-1')
      6 select datediff(yyyy,getdate(),'2012-1-1')
      7 
      8 --可用于判断数据库里面的数据是否属于同年
      9 --如果为同一年则返回0
     10 --前年日期返回负数
     11 --明后年日期返回大于零的正整数
     12 ------------------------------------
     13 --一个月第一天的
     14 Select DATEADD(mm, DATEDIFF(mm,0,getdate()), 0)
     15 
     16 --本周的星期一
     17 Select DATEADD(wk, DATEDIFF(wk,0,getdate()), 0)
     18 
     19 --一年的第一天
     20 Select DATEADD(yy, DATEDIFF(yy,0,getdate()), 0)
     21 
     22 --季度的第一天
     23 Select DATEADD(qq, DATEDIFF(qq,0,getdate()), 0)
     24 
     25 --当天的半夜
     26 Select DATEADD(dd, DATEDIFF(dd,0,getdate()), 0)
     27 
     28 --上个月的最后一天
     29 Select dateadd(ms,-3,DATEADD(mm, DATEDIFF(mm,0,getdate()), 0))
     30 
     31 --去年的最后一天
     32 Select dateadd(ms,-3,DATEADD(yy, DATEDIFF(yy,0,getdate()), 0))
     33 
     34 --本月的最后一天
     35 Select dateadd(ms,-3,DATEADD(mm, DATEDIFF(m,0,getdate())+1, 0))
     36 
     37 --本年的最后一天
     38 Select dateadd(ms,-3,DATEADD(yy, DATEDIFF(yy,0,getdate())+1, 0))
     39 
     40 --本月的第一个星期一
     41 select DATEADD(wk, DATEDIFF(wk,0,dateadd(dd,6-datepart(day,getdate()),getdate())), 0) 
     42 -------------------------------------------
     43 --建立一个表,其中的记录包含有当前的日期和时间,可以添加一个DATETIME型字段,指定其缺省值为函数GETDATE()的返回值,就象这样:
     44 
     45 Create TABLE #site_log (username VARCHAR(40),useractivity VARCHAR(100),entrydate DATETIME DEFAULT GETDATE())
     46 drop table #site_log
     47 
     48 --转换日期和时间
     49 --函数GETDATE()的返回值在显示时只显示到秒。实际上,SQL Sever内部时间可以精确到毫秒级(确切地说,可以精确到3.33毫秒)
     50 Select CONVERT(VARCHAR(30),GETDATE(),9)
     51 在函数CONVERT()中你可以使用许多种不同风格的日期和时间格式
     52 日期和时间的类型:
     53 类型值   标准        输出
     54 0         Default    mon dd yyyy hh:miAM
     55 1         USA        mm/dd/yy
     56 2         ANSI    yy.mm.dd
     57 3         British/French dd/mm/yy
     58 4         German    dd.mm.yy
     59 5         Italian    dd-mm-yy
     60 6         -        dd mon yy
     61 7         -        mon dd,yy
     62 8         -        hh:mi:ss
     63 9         Default    + milliseconds--mon dd yyyy    hh:mi:ss:mmmAM(or )
     64 10        USA        mm-dd-yy
     65 11        JAPAN    yy/mm/dd
     66 12        ISO        yymmdd
     67 13        Europe    Default + milliseconds--dd mon yyyy hh:mi:ss:mmm(24h)
     68 14        -        hh:mi:ss:mmm(24h)
     69 
     70 select convert(varchar(30),getdate(),106)
     71 select convert(varchar(30),getdate(),6)
     72 /**类型0,9,和13总是返回四位的年。
     73     对其它类型,要显示世纪,把style值加上100。
     74     类型13和14返回24小时时钟的时间。
     75     类型0,7,和13返回的月份用三位字符表示(用Nov代表November)
     76     对表中所列的每一种格式,你可以把类型值加上100来显示有世纪的年(例如,00年将显示为2000年)*/
     77 
     78 --抽取日期和时间
     79 --在许多情况下,也许只想得到日期和时间的一部分,而不是完整的日期和时间。为了抽取日期的特定部分,你可以使用函数DATEPARt()
     80 
     81 select datepart(dd,getdate())
     82 select datepart(mm,getdate())
     83 select datepart(yyyy,getdate())
     84 select datepart(yy,getdate())
     85 --函数DATEPART()的参数是两个变量。第一个变量指定要抽取日期的哪一部分;第二个变量是实际的数据。在这个例子中,函数DATEPART()抽取月份,因为mm代表月份。下面是这个Select 语句的输出结果:
     86 --函数DATEPART()的返回值是一个整数
     87 
     88 --日期的各部分及其简写
     89 日期部分    简写    值
     90 year        yy        1753--9999
     91 quarter     qq        1--4
     92 month        mm        1--12
     93 day of year dy        1--366
     94 day            dd        1--31
     95 week        wk        1--53
     96 weekday     dw        1--7(Sunday--Saturday)
     97 hour        hh        0--23
     98 minute        mi        0--59
     99 second        ss        0--59
    100 milisecond    ms        0--999
    101 
    102 --当你需要进行日期和时间的比较时,使用函数DATEPART()返回整数是有用的。要以更易读的格式得到部分的日期和时间,你可以使用函数DATENAME(),如下例所示:
    103 
    104 Select site_name ‘Site Name’
    105 DATENAME(mm,site_entrydate) ‘Month Posted’
    106 FROM site_directory
    107 
    108 select datename(mm,getdate())
    109 
    110 --函数DATENAME()和函数DATEPART()接收同样的参数
    111 --它的返回值是一个字符串,而不是一个整数
    112 
    113 --可以用函数DATENAME()来抽取一个星期中的某一天。下面的这个例子同时抽取一周中的某一天和日期中的月份:
    114 
    115 select datename(dw,getdate())+'-'+datename(mm,getdate()) as 'Day and Month Posted'
    116 
    117 --返回日期和时间范围
    118 --当分析表中的数据时,也许希望取出某个特定时间的数据
    119 --也许对特定的某一天中,比如说2000年12月25日――访问者在你站点上的活动感兴趣,要取出这种类型的数据,你也许会试图使用这样的Select语句
    120 Select * FROM weblog Where entrydate="12/25/20000"
    121 --不要这样做。这个Select语句不会返回正确的记录
    122 --它将只返回日期和时间是12/25/2000 12:00:00:000AM的记录,换句话说,只有刚好在午夜零点输入的记录才被返回。
    123 
    124 --问题是SQL Sever将用完整的日期和时间代替部分日期和时间。
    125 --例如,当你输入一个日期,但不输入时间时,SQL Sever将加上缺省的时间"00:00:00:000AM"
    126 --当你输入一个时间,但不输入日期时,SQL Sever将加上缺省的日期"Jan 1 1900"。
    127 --要返回正确的记录,你需要适用日期和时间范围。有不止一种途径可以做到这一点。例如,下面的这个Select 语句将能返回正确的记录:
    128 
    129 create table #dt(da datetime,id int)--验证sql缺省日期时间
    130 insert into #dt values('2011-10-10',1)
    131 insert into #dt values('09:10:10',2)
    132 select * from #dt
    133 drop table #dt
    134 
    135 Select * FROM weblog 
    136 Where entrydate>=”12/25/2000” AND entrydate<”12/26/2000”
    137 --这个语句可以完成任务,因为它选取的是表中的日期和时间大于等于12/25/2000 00:00:00:000AM并小于12/26/2000 00:00:00:000AM的记录。换句话说,它将正确地返回2000年圣诞节这一天输入的每一条记录。
    138 --另一种方法是,你可以使用LIKE来返回正确的记录。通过在日期表达式中包含通配符"%",你可以匹配一个特定日期的所有时间。这里有一个例子:
    139 
    140 Select * FROM weblog Where entrydate LIKE ‘Dec 25 2000%’
    141 
    142 --这个语句可以匹配正确的记录。因为通配符“%”代表了任何时间。
    143 --使用这两种匹配日期和时间范围的函数,你可以选择某个月,某一天,某一年,某个小时,某一分钟,某一秒,甚至某一毫秒内输入的记录。但是,如果你使用 LIKE 来匹配秒或毫秒,你首先需要使用函数CONVERT()把日期和时间转换为更精确的格式
    144 
    145 --比较日期和时间
    146 --最后,还有两个日期和时间函数对根据日期和时间取出记录是有用的。使用函数DATEADD()和DATEDIFF(),你可以比较日期的早晚。例如,下面的Select语句将显示表中的每一条记录已经输入了多少个小时:
    147 
    148 select datediff(mm,getdate(),'2011-10-10')
    149 
    150 --函数DADEDIFF()的参数是三个变量。第个变量指定日期的某一部分。在这个例子中,是按小时对日期进行比较,在日期2000年11月1日和2000年11月30日的指定时间之间有689个小时。另外两个参数是要进行比较的时间。为了返回一个正数,较早的时间应该先给。
    151 --函数DATEADD()把两个日期相加。当你需要计算截止日期这一类的数据时,这个函数是有用处的
    152 
    153 
    154 select dateadd(mm,-1,getdate());
    155 
    156 --函数DATEADD()的参数有三个变量。第一个变量代表日期的某一部分,这个例子用到了代表月份的mm。
    157 --第二个变量指定了时间的间隔――在本例中是一个月。
    158 --最后一个变量是一个日期
    159 --注意:
    160 --使用函数DATEADD()把一个日期加上一个月,它并不加上30天。这个函数只简单地把月份值加1。
    161 
    162 
    163 ---------------------------------------
    164 Select CONVERT(varchar(100), GETDATE(), 0): 05 16 2006 10:57AM 
    165 Select CONVERT(varchar(100), GETDATE(), 1): 05/16/06 
    166 Select CONVERT(varchar(100), GETDATE(), 2): 06.05.16 
    167 Select CONVERT(varchar(100), GETDATE(), 3): 16/05/06 
    168 Select CONVERT(varchar(100), GETDATE(), 4): 16.05.06 
    169 Select CONVERT(varchar(100), GETDATE(), 5): 16-05-06 
    170 Select CONVERT(varchar(100), GETDATE(), 6): 16 05 06 
    171 Select CONVERT(varchar(100), GETDATE(), 7): 05 16, 06 
    172 Select CONVERT(varchar(100), GETDATE(), 8): 10:57:46 
    173 Select CONVERT(varchar(100), GETDATE(), 9): 05 16 2006 10:57:46:827AM 
    174 Select CONVERT(varchar(100), GETDATE(), 10): 05-16-06 
    175 Select CONVERT(varchar(100), GETDATE(), 11): 06/05/16 
    176 Select CONVERT(varchar(100), GETDATE(), 12): 060516 
    177 Select CONVERT(varchar(100), GETDATE(), 13): 16 05 2006 10:57:46:937 
    178 Select CONVERT(varchar(100), GETDATE(), 14): 10:57:46:967 
    179 Select CONVERT(varchar(100), GETDATE(), 20): 2006-05-16 10:57:47 
    180 Select CONVERT(varchar(100), GETDATE(), 21): 2006-05-16 10:57:47.157 
    181 Select CONVERT(varchar(100), GETDATE(), 22): 05/16/06 10:57:47 AM 
    182 Select CONVERT(varchar(100), GETDATE(), 23): 2006-05-16 
    183 Select CONVERT(varchar(100), GETDATE(), 24): 10:57:47 
    184 Select CONVERT(varchar(100), GETDATE(), 25): 2006-05-16 10:57:47.250 
    185 Select CONVERT(varchar(100), GETDATE(), 100): 05 16 2006 10:57AM 
    186 Select CONVERT(varchar(100), GETDATE(), 101): 05/16/2006 
    187 Select CONVERT(varchar(100), GETDATE(), 102): 2006.05.16 
    188 Select CONVERT(varchar(100), GETDATE(), 103): 16/05/2006 
    189 Select CONVERT(varchar(100), GETDATE(), 104): 16.05.2006 
    190 Select CONVERT(varchar(100), GETDATE(), 105): 16-05-2006 
    191 Select CONVERT(varchar(100), GETDATE(), 106): 16 05 2006 
    192 Select CONVERT(varchar(100), GETDATE(), 107): 05 16, 2006 
    193 Select CONVERT(varchar(100), GETDATE(), 108): 10:57:49 
    194 Select CONVERT(varchar(100), GETDATE(), 109): 05 16 2006 10:57:49:437AM 
    195 Select CONVERT(varchar(100), GETDATE(), 110): 05-16-2006 
    196 Select CONVERT(varchar(100), GETDATE(), 111): 2006/05/16 
    197 Select CONVERT(varchar(100), GETDATE(), 112): 20060516 
    198 Select CONVERT(varchar(100), GETDATE(), 113): 16 05 2006 10:57:49:513 
    199 Select CONVERT(varchar(100), GETDATE(), 114): 10:57:49:547 
    200 Select CONVERT(varchar(100), GETDATE(), 120): 2006-05-16 10:57:49 
    201 Select CONVERT(varchar(100), GETDATE(), 121): 2006-05-16 10:57:49.700 
    202 Select CONVERT(varchar(100), GETDATE(), 126): 2006-05-16T10:57:49.827: 
    203 Select CONVERT(varchar(100), GETDATE(), 131): 18/04/1427 10:57:49:920AM
    各系统表的作用

     1 MSSQL中各个系统表的作用 
     2 
     3 sysaltfiles    主数据库               保存数据库的文件
     4 syscharsets    主数据库               字符集与排序顺序
     5 sysconfigures  主数据库               配置选项
     6 syscurconfigs  主数据库               当前配置选项
     7 sysdatabases   主数据库               服务器中的数据库
     8 syslanguages   主数据库               语言
     9 syslogins      主数据库               登陆帐号信息
    10 sysoledbusers  主数据库               链接服务器登陆信息
    11 sysprocesses   主数据库               进程
    12 sysremotelogins主数据库               远程登录帐号
    13 syscolumns     每个数据库             列
    14 sysconstrains  每个数据库             限制
    15 sysfilegroups  每个数据库             文件组
    16 sysfiles       每个数据库             文件
    17 sysforeignkeys 每个数据库             外部关键字
    18 sysindexs      每个数据库             索引
    19 sysmenbers     每个数据库             角色成员
    20 sysobjects     每个数据库             所有数据库对象
    21 syspermissions 每个数据库             权限
    22 systypes       每个数据库             用户定义数据类型
    23 sysusers       每个数据库             用户
    24 
    25 
    26 --用什么方法可以得到一个表中所有的列名。SQl语句。
    27 select   列名=name   from   syscolumns   where   id=object_id(N'要查的表名') 
    28 
    29 use gpStrudy
    30 select   name="name"   from   syscolumns   where   id=object_id(N'bookTable')

    goto在T-SQL中的用法


     1 /**
     2 GOTO语句可以实现无条件跳转
     3 语法格式 GOTO  lable 其中lable为要跳转到的语句标号
     4 遇到GOTO语句时直接跳转到lable标签处继续执行,而goto之后的语句不再执行
     5 **/
     6 
     7 declare @result int=0
     8 declare @sn int =0
     9 loop_1:--定义标号
    10 set @result=@result+@sn
    11 set @sn=@sn+1
    12 if(@sn<=100)
    13 goto loop_1--如果小于100就跳转到loop_1标号处
    14 print @result
    风萧萧雨蒙蒙,怎奈夜漫长
  • 相关阅读:
    Spark开发-SparkUDAF(二)
    Spark开发-Spark UDAF(一)
    Spark开发-Spark中类型安全UDAF开发示例
    Spark开发_构建TypeSafe的Dataset
    布隆过滤器(Bloom Filter)
    一个 Spark 应用程序的完整执行流程
    Spark的RPC
    Spark调优
    Hbase系列文章
    Flink怎么做到精确一次的?
  • 原文地址:https://www.cnblogs.com/yflwz/p/4164541.html
Copyright © 2011-2022 走看看