zoukankan      html  css  js  c++  java
  • sql server 2008 offer 4 kinds of date datatypes [ZT]

    在mssql 9.0 以前,只有2种日期的数据类型,长短日期型。现在,即将在三月份正式发布的版本将支持DATE, TIME, DATETIMEOFFSET and DATETIME2.

    DATE
    很多人都比较迷惑在不需要日期精确的情况下却存储了许多不应该存储的。比如你只需要精确到日期,却不需要小时分秒,但是目前的日期类数据类型却不允许这样,如果转成char型,也是很不值得。
    一条这样的语句:
    SELECT * FROM tblDate Where datediff(d,[Date],‘2007-10-01’) =0
    会让你很是郁闷,违反一个基本准则:等号左边操作列。索引用不上不说,还要每次都计算。
    (当然这个实现还是可以多样的,你可以使用Between and 来绕弯实现利用索引的。原文举例的是这个语句)

    但是如果有只是存储整数部分的日期就好了。2008版的date类型就是你想要的!
    (补充一下:mssql里面对日期类型的存储是这样的:将日期部分存储成一个整数,将日期的后面的屁股存储成小数部分,然后拼加在一起存在数据库内是一个类似于float类型的数据。具体可以演练这样一段代码:
    select convert(float,getdate())
    select datediff(day,0,getdate())
    select dateadd(day,0,datediff(day,0,getdate()))
    select convert(float,dateadd(day,0,datediff(day,0,getdate())))
    select convert(float,getdate()-dateadd(day,0,datediff(day,0,getdate())))

    附带:date的取值范围是0001-01-01 到9999-12-31

    TIME
    这个类型也就顾名思义其实就是刚才date类型的尾巴,取值范围是00:00:00.0000000 到23:59:59.9999999

    DATETIME2
    这个类型是让你可以指定时间的精确度,比如:
    DECLARE @dt7 datetime2(7)

    SET @dt7 = Getdate()

    PRINT @dt7

    --result is 2008-01-3 12:15:11.2340000
    他一共可以指定从0到7的小数点位数,具体参考如下:

    Fraction

    Output

    0

    2007-10-28 22:11:20

    1

    2007-10-28 22:11:19.7

    2

    2007-10-28 22:11:19.70

    3

    2007-10-28 22:11:19.703

    4

    2007-10-28 22:11:19.7030

    5

    2007-10-28 22:11:19.70300

    6

    2007-10-28 22:11:19.703000

    7

    2007-10-28 22:11:19.7030000


    DATETIMEOFFSET
    主要是针对时区来的,可以在时间上加上时区。例如:
    DECLARE @dt DATETIMEOFFSET(0)

    SET @dt = '2007-10-29 22:50:55 -1:00'

     

    DECLARE @dt1 DATETIMEOFFSET(0)

    SET @dt1 = '2007-10-29 22:50:55 +5:00'

    SELECT DATEDIFF(hh,@dt,@Dt1)

    个人感觉用处不是很大。

    如果需求需要将日期和时间都分别存储,并且分别建立索引,甚至是联合索引,那么如何得到一个真正的时间呢?
    Declare @dt as DATE

    Set @dt = getdate()

    Declare @dtt as TIME

    Set @dtt = getdate()

    Select cast(@dt as smalldatetime)  + cast(@dtt as smalldatetime)

    Output: 
    2007-10-28 00:17:00.  




    参考自:http://www.sql-server-performance.com/articles/dev/datetime_2008_p1.aspx
  • 相关阅读:
    Chandy-Lamport_algorithm
    3 differences between Savepoints and Checkpoints in Apache Flink
    列数 行数 表数 限制
    数据收集、传输、元数据管理、作业流调度、海量数据查询引擎、数据可视化
    分析云负载均衡产品
    端口被占用通过域名的处理 把www.domain.com均衡到本机不同的端口 反向代理 隐藏端口 Nginx做非80端口转发 搭建nginx反向代理用做内网域名转发 location 规则
    JSON Web Token
    查看开启端口的应用
    If the parts of an organization (e.g., teams, departments, or subdivisions) do not closely reflect the essential parts of the product, or if the relationship between organizations do not reflect the r
    微服务架构的理论基础
  • 原文地址:https://www.cnblogs.com/RobotTech/p/1026454.html
Copyright © 2011-2022 走看看