• SQL 日期字段(Date,DateTime,Time……)


    SQL Server一共支持6种日期时间格式,分别是

    1. date
    2. datetime
    3. datetime2
    4. datetimeoffset
    5. samlldatetime
    6. time

    date

    date关键字定义一个日期类型,默认的字符串格式为"YYYY-MM-DD",可支持的范围为0001-01-01到9999-12-31,默认初值为1900-01-01。在数据库中占3个字节(定长)。

     转换

      time: Date类型不允许转换为Time类型

      datetime:date类型的日期部分将被赋值到datetime类型的日期部分,datetime类型的time部分将设为0。

    View Code
    DECLARE @date date= '12-10-25';
    DECLARE @datetime datetime= @date;
    
    SELECT @date AS '@date', @datetime AS '@datetime';
    
    --Result
    --@date      @datetime
    ------------ -----------------------
    --2025-12-10 2025-12-10 00:00:00.000
    --
    --(1 row(s) affected)

     smalldatetime:当date类型的值在smalldatetime能表示的范围内是,转换跟转换到datetime一致,否则则转换失败,引发242异常,并且smalldatetime类型的目标值将设为null。

    View Code
    DECLARE @date date= '1912-10-25';
    DECLARE @smalldatetime smalldatetime = @date;
    
    SELECT @date AS '@date', @smalldatetime AS '@smalldatetime';
    
    --Result
    --@date      @smalldatetime
    ------------ -----------------------
    --1912-10-25 1912-10-25 00:00:00
    --
    --(1 row(s) affected)

     datetimeoffset:日期部分将使用date类型的日期部分的值,时间部分将被设置为 00:00.0000000 +00:00。

    View Code
    DECLARE @date date = '1912-10-25';
    DECLARE @datetimeoffset datetimeoffset(3) = @date;
    
    SELECT @date AS '@date', @datetimeoffset AS '@datetimeoffset';
    
    --Result
    --@date      @datetimeoffset
    ------------ ------------------------------
    --1912-10-25 1912-10-25 00:00:00.000 +00:00
    --
    --(1 row(s) affected)

    datetime2(n):日期部分将使用date类型的日期部分的值,时间部分将被设置为 00:00.000000

    View Code
    DECLARE @date date = '1912-10-25'
    DECLARE @datetime2 datetime2(3) = @date;
    
    SELECT @date AS '@date', @datetime2 AS '@datetime2(3)';
    
    --Result
    --@date      @datetime2(3)
    ------------ -----------------------
    --1912-10-25 1912-10-25 00:00:00.000
    --
    --(1 row(s) affected)

    Eg:

    sql脚本:

    View Code
    SELECT 
         CAST('2007-05-08 12:35:29. 1234567 +12:15' AS time(7)) AS 'time' 
        ,CAST('2007-05-08 12:35:29. 1234567 +12:15' AS date) AS 'date' 
        ,CAST('2007-05-08 12:35:29.123' AS smalldatetime) AS 
            'smalldatetime' 
        ,CAST('2007-05-08 12:35:29.123' AS datetime) AS 'datetime' 
        ,CAST('2007-05-08 12:35:29. 1234567 +12:15' AS datetime2(7)) AS 
            'datetime2'
        ,CAST('2007-05-08 12:35:29.1234567 +12:15' AS datetimeoffset(7)) AS 
            'datetimeoffset';

    输出:


     

  • 相关阅读:
    【微信公众号开发】【13】批量导出公众号所有用户信息到Excel
    【实战问题】【1】@PostConstruct 服务启动后加载两次的问题
    敌兵布阵(树状数组)
    Java大数应用
    Exponentiation(java 大实数)
    确定比赛名次(拓扑排序)
    487-3279(输入外挂)
    More is better(并查集)
    How Many Tables(并查集)
    Convex(扫描线降维)
  • 原文地址:https://www.cnblogs.com/liaotongquan/p/2812840.html
Copyright © 2020-2023  润新知