黑马程序员技术交流社区
标题:
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一下就知道了,
sql日期.jpg
(59.14 KB, 下载次数: 85)
下载附件
2012-3-28 16:52 上传
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