加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > MsSql教程 > 正文

SqlServer教程—第二章(日期处理一)

发布时间:2020-12-12 14:53:14 所属栏目:MsSql教程 来源:网络整理
导读:一、日期概念的测试 1--测试 datetime 精度问题 DECLARE @t TABLE(date char(21)) INSERT @t SELECT '1900-1-1 00:00:00.000' INSERT @t SELECT '1900-1-1 00:00:00.001' INSERT @t SELECT '1900-1-1 00:00:00.009' INSERT @t SELECT '1900-1-1 00:00:00.002

一、日期概念的测试

1--测试 datetime 精度问题
DECLARE @t TABLE(date char(21))
INSERT @t SELECT '1900-1-1 00:00:00.000'
INSERT @t SELECT '1900-1-1 00:00:00.001'
INSERT @t SELECT '1900-1-1 00:00:00.009'
INSERT @t SELECT '1900-1-1 00:00:00.002'
INSERT @t SELECT '1900-1-1 00:00:00.003'
INSERT @t SELECT '1900-1-1 00:00:00.004'
INSERT @t SELECT '1900-1-1 00:00:00.005'
INSERT @t SELECT '1900-1-1 00:00:00.006'
INSERT @t SELECT '1900-1-1 00:00:00.007'
INSERT @t SELECT '1900-1-1 00:00:00.008'
SELECT date,转换后的日期=CAST(date as datetime) FROM @t

2--结果

date????????????????? 转换后的日期
--------------------- --------------------------
1900-1-1 00:00:00.000 1900-01-01 00:00:00.000
1900-1-1 00:00:00.001 1900-01-01 00:00:00.000
1900-1-1 00:00:00.009 1900-01-01 00:00:00.010
1900-1-1 00:00:00.002 1900-01-01 00:00:00.003
1900-1-1 00:00:00.003 1900-01-01 00:00:00.003
1900-1-1 00:00:00.004 1900-01-01 00:00:00.003
1900-1-1 00:00:00.005 1900-01-01 00:00:00.007
1900-1-1 00:00:00.006 1900-01-01 00:00:00.007
1900-1-1 00:00:00.007 1900-01-01 00:00:00.007
1900-1-1 00:00:00.008 1900-01-01 00:00:00.007

(所影响的行数为 10 行)
GO

3-- 对于 datetime 类型的纯日期和时间的十六进制表示
DECLARE @dt datetime

4--单纯的日期
SET @dt='1900-1-2'
SELECT CAST(@dt as binary(8))
5--结果: 0x0000000100000000

6--单纯的时间
SET @dt='00:00:01'
SELECT CAST(@dt as binary(8))
7--结果: 0x000000000000012C
GO

8-- 对于 smalldatetime 类型的纯日期和时间的十六进制表示
DECLARE @dt smalldatetime

9--单纯的日期
SET @dt='1900-1-2'
SELECT CAST(@dt as binary(4))
10--结果: 0x00010000

11--单纯的时间
SET @dt='00:10'
SELECT CAST(@dt as binary(4))
12--结果: 0x0000000A

?二、日期转换

1--字符转换为日期时,Style的使用

2--Style=101时,表示日期字符串为:mm/dd/yyyy格式
SELECT CONVERT(datetime,'11/1/2003',101)
--结果:2003-11-01 00:00:00.000

3-- Style=103时,表示日期字符串为:dd/mm/yyyy格式
SELECT CONVERT(datetime,103)
--结果:2003-01-11 00:00:00.000


4?日期转换为字符串
DECLARE @dt datetime
SET @dt='2003-1-11'

5-- Style=101时,表示将日期转换为:mm/dd/yyyy 格式
SELECT CONVERT(varchar,@dt,101)
--结果:01/11/2003

6-- Style=103时,表示将日期转换为:dd/mm/yyyy 格式
SELECT CONVERT(varchar,103)
--结果:11/01/2003


?7这是很多人经常犯的错误,对非日期型转换使用日期的style样式
SELECT CONVERT(varchar,'2003-1-11',101)
--结果:2003-1-11


三、日期格式化

1-短日期格式:yyyy-m-d
SELECT REPLACE(CONVERT(varchar(10),120),N'-0','-')

2-长日期格式:yyyy年mm月dd日
--方法1
SELECT STUFF(STUFF(CONVERT(char(8),112),5,N'年'),8,N'月')+N'日'
--方法2
SELECT DATENAME(Year,@dt)+N'年'+DATENAME(Month,@dt)+N'月'+DATENAME(Day,@dt)+N'日'

3-长日期格式:yyyy年m月d日
SELECT DATENAME(Year,@dt)+N'年'+CAST(DATEPART(Month,@dt) AS varchar)+N'月'+DATENAME(Day,@dt)+N'日'

4-完整日期+时间格式:yyyy-mm-dd hh:mi:ss:mmm SELECT CONVERT(char(11),120)+CONVERT(char(12),114)

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读