使用c#构造date数据类型_mssql数据库教程-查字典教程网
使用c#构造date数据类型
使用c#构造date数据类型
发布时间:2016-12-28 来源:查字典编辑
摘要:/***********************************作者:trieagle(让你望见影子的墙)日期:2009.8.14注...

/***********************************

作者:trieagle(让你望见影子的墙)

日期:2009.8.14

注: 转载请保留此信息

************************************/

使用c#构造date数据类型

在sql server2005没有实现date类型,但是提供了很好的扩展性,可以利用CLR来构造date类型。有一部分是参考了Fc的代码写的。

步骤:

1、在vs 2005中新建项目,一次选择c#——>>数据库——>>sql server项目,输入项目名称

2、选择要连接的数据库

3、在项目名称右键,添加——>>新建项——>>用户定义的类型——>>输入类型名称

4、代码如下:

复制代码 代码如下:

using System;

using System.Data;

using System.Data.SqlClient;

using System.Data.SqlTypes;

using Microsoft.SqlServer.Server;

[Serializable]

[Microsoft.SqlServer.Server.SqlUserDefinedTypeFormat.UserDefined ,IsByteOrdered=true,MaxByteSize =20,ValidationMethodName="ValidateDate")]

public struct date : INullable,IBinarySerialize

{

// 私有成员

private bool m_Null;

private string m_date;

public override string ToString()

{

if (this.m_Null)

return "null";

else

{

return this.m_date;

}

}

public bool IsNull

{

get

{

return m_Null;

}

}

public static date Null

{

get

{

date h = new date();

h.m_Null = true;

return h;

}

}

public static date Parse(SqlString s)

{

if (s.IsNull || (!s.IsNull && s.Value.Equals("")))

return Null;

else

{

date u = new date();

string[] xy = s.Value.Split(" ".ToCharArray());

u.m_date = xy[0];

if (!u.ValidateDate())

throw new ArgumentException ("无效的时间");

return u;

}

}

public string _date

{

get

{

return this.m_date;

}

set

{

m_Null = true;

m_date = value;

if (!ValidateDate())

throw new ArgumentException("无效的时间");

}

}

public void Write(System.IO.BinaryWriter w)

{

byte header = (byte)(this.IsNull ? 1 : 0);

w.Write(header);

if (header == 1)

{

return;

}

w.Write(this.m_date);

}

public void Read(System.IO.BinaryReader r)

{

byte header = r.ReadByte();

if (header == 1)

{

this.m_Null = true;

return;

}

this.m_Null = false ;

this.m_date = r.ReadString();

}

private bool ValidateDate() //判断时间是否有效

{

try

{

DateTime dt = Convert.ToDateTime(m_date);

return true;

}

catch

{

return false;

}

}

}

5、按F5进行部署

6、测试:

复制代码 代码如下:

CREATE TABLE tb(id int,dt dbo.Date DEFAULT CONVERT(dbo.Date,CONVERT(VARCHAR(10),GETDATE(),120)));

insert into tb(id) values(1)

SELECT id,dt=dt.ToString() FROM tb;

/*

结果:

id dt

1 2009-08-14

*/

DROP TABLE tb;

注:

1、 如果要对date类型进行日期的加减,可以调用ToString()方法输出为字符串,然后转化为datetime类型,然后再进行日期的计算。

2、 不能直接使用select * from tb 来输出dt列的值,这样输出的是一串二进制数

相关阅读
推荐文章
猜你喜欢
附近的人在看
推荐阅读
拓展阅读
  • 大家都在看
  • 小编推荐
  • 猜你喜欢
  • 最新mssql数据库学习
    热门mssql数据库学习
    编程开发子分类