1. 程式人生 > >SQL 基礎及時間函式

SQL 基礎及時間函式

sql知識點

 一.7種常見型別
    int 整數型別 -2^31到2^31-1
    decimal 小數型別 -10^38+1到10^38-1
    char 儲存固定長度非unicode字元,最多可存8000個位元組
    varchar 儲存可變長度非unicode字元,最多可存8000個位元組
    nvarchar 儲存可變長度非unicode字元,最多可存4000個位元組
    date 0001-01-01到9999-12-31
    datetime 1753-01-01 00:00:00到9999-12-31 00:00:00

二.約束
    主鍵約束 primary key
    外來鍵約束 references 外來鍵表(外來鍵id)
    自增約束 identity(起始值,自增值)
    check約束 check(列值>條件 (and 列值>條件))

  三.函式
 1)時間介紹       

    year                        753-9999   縮寫: yy
  quarter                                  季度 1-4 qq
   month                                 1-12     mm
  day                                      1-31 dy
  weekday                      -  一週中的某一天 1-7 -----
  week                                     0-51 wk
 hour                                   時   0-23 hh
  minute                               分鐘 0-59   mi
  second                              0-59     ss
  millisecond                           0-999 毫秒  ms


 2)時間函式
 

--1.時間格式轉換(yyyy-mm-dd hh-mm-ss.ms/yyyy-mm-dd hh-mm-ss/yyyy-mm-dd/hh-mm-ss.ms
select GETDATE()  
select convert(varchar(50),GETDATE(),20)
select CONVERT(varchar(10),GETDATE(),120)
select CONVERT(varchar(10),GETDATE(),114)
--2.計算兩個時間之間的天數差(select DATEDIFF(d,gtime,otime)  d:自定義引數(天數)  gtime:起始時間  otime:結束時間)
select DATEDIFF(d,'1997-10-05',GETDATE())  
--3.將3個引數轉換為yyyy-mm-dd這樣的格式(DATEFROMPARTS(year int,month int,day int) year,month,day為引數;後面int為引數型別)  
select DATEFROMPARTS(1997,10,05)
--4.在原有時間上新增1年/2季度/3月/4天/5小時/6分鐘/7秒
select DATEADD(YEAR,1,GETDATE())
select DATEADD(QUARTER,2,GETDATE())
select DATEADD(MONTH,3,GETDATE())
select DATEADD(DAY,4,GETDATE())
select DATEADD(HOUR,5,GETDATE())
select DATEADD(MINUTE,6,GETDATE())
select DATEADD(SECOND,7,GETDATE())
--5.返回年/季度/月/天/時/分/秒的整數部分
select DATEPART(YEAR,GETDATE())
select DATEPART(QUARTER,GETDATE())
select DATEPART(MONTH,GETDATE())
select DATEPART(DAY,GETDATE())
select DATEPART(HOUR,GETDATE())
select DATEPART(MINUTE,GETDATE())
select DATEPART(SECOND,GETDATE())
--6.返回對應的星期幾/返回一年中的第幾周(返回的是國外的第幾周(國外以星期天為一週第一天))
select DATENAME(WEEKDAY,GETDATE())
select DATENAME(WEEK,GETDATE())
--7.計算本週的週一/計算一年的第一天
select DATEADD(wk,DATEDIFF(wk,0,getdate()),0)
select DATEADD(yy,DATEDIFF(yy,0,getdate()),0)