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';

输出:


 

 

 

转载于:https://www.cnblogs.com/liaotongquan/archive/2012/12/11/2812840.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值