黑马程序员技术交流社区

标题: SQL语句中输入的日期格式问题 [打印本页]

作者: 徐刚    时间: 2012-3-28 11:04
标题: SQL语句中输入的日期格式问题
这几天在看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'胜');

日期的数据如上红色显示的部分,这是个十六进制的数么?我看不出来这个数和日期的关系?或者说这个数是怎么分解成日期的?因为我将它转成十进制的数后,看不出和日期有何关系。
望高手给予解答!谢谢!
作者: 孙树迁    时间: 2012-3-28 16:52
本帖最后由 孙树迁 于 2012-3-28 16:59 编辑

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




CAST 函数的用法百度吧,我也没用过,
作者: 徐刚    时间: 2012-3-28 17:08
我知道啊,CAST(expression AS date_type)是类型转换函数,CAST(0x00009AF200000000 AS DateTime) 就是把"0x00009AF200000000”这个转换成一个日期类型的数据,我j就是想知道"0x00009AF200000000"这是个什么类型的数据,或者它们之间有什么联系,为什么这个可以转成日期格式?
作者: 张学良    时间: 2012-3-28 19:40
以0x开头的是十六进制,它转换时应该是以每个十六进制的数字与权相乘得到的吧




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2