A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 徐刚 中级黑马   /  2012-3-28 11:04  /  2754 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

这几天在看SQL的视频,看到一题练习:

有一张表T_Scores,记录比赛成绩
Date                Name                Score
2008-8-8         拜仁          胜
2008-8-9         奇才          胜
2008-8-9         湖人          胜
2008-8-10       拜仁          负
2008-8-8         拜仁          负
2008-8-12       奇才          胜
要求输出下面的格式:
Name            胜     负
拜仁              1      2
湖人        1          0
奇才        2          0

老师在备注中写的创建表、向表中插入数据的代码如下:
CREATE TABLE [T_Scores](
[Date] [datetime] NULL,
[Name] [nvarchar](50) COLLATE Chinese_PRC_CI_AS NULL,
[Score] [nvarchar](50) COLLATE Chinese_PRC_CI_AS NULL
);
INSERT [T_Scores]([Date],[Name],[Score]) values(CAST(0x00009AF200000000 AS DateTime),N'拜仁',N'胜');
INSERT [T_Scores]([Date],[Name],[Score]) values(CAST(0x00009AF300000000 AS DateTime),N'奇才',N'胜');
INSERT [T_Scores]([Date],[Name],[Score]) values(CAST(0x00009AF300000000 AS DateTime),N'湖人',N'胜');
INSERT [T_Scores]([Date],[Name],[Score]) values(CAST(0x00009AF400000000 AS DateTime),N'拜仁',N'负');
INSERT [T_Scores]([Date],[Name],[Score]) values(CAST(0x00009AF200000000 AS DateTime),N'拜仁',N'负');
INSERT [T_Scores]([Date],[Name],[Score]) values(CAST(0x00009AF600000000 AS DateTime),N'奇才',N'胜');

日期的数据如上红色显示的部分,这是个十六进制的数么?我看不出来这个数和日期的关系?或者说这个数是怎么分解成日期的?因为我将它转成十进制的数后,看不出和日期有何关系。
望高手给予解答!谢谢!

评分

参与人数 1技术分 +1 收起 理由
宋天琪 + 1

查看全部评分

3 个回复

倒序浏览
本帖最后由 孙树迁 于 2012-3-28 16:59 编辑

大哥,这不是看出来的,我也第一次见到这样的日期,其实是:CAST(0x00009AF200000000 AS DateTime) 是一个日期,
你在查询窗口里select一下就知道了,




CAST 函数的用法百度吧,我也没用过,

评分

参与人数 1技术分 +1 收起 理由
宋天琪 + 1

查看全部评分

回复 使用道具 举报
我知道啊,CAST(expression AS date_type)是类型转换函数,CAST(0x00009AF200000000 AS DateTime) 就是把"0x00009AF200000000”这个转换成一个日期类型的数据,我j就是想知道"0x00009AF200000000"这是个什么类型的数据,或者它们之间有什么联系,为什么这个可以转成日期格式?
回复 使用道具 举报
以0x开头的是十六进制,它转换时应该是以每个十六进制的数字与权相乘得到的吧

评分

参与人数 1技术分 +1 收起 理由
宋天琪 + 1

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马