• 企业400电话
  • 微网小程序
  • AI电话机器人
  • 电商代运营
  • 全 部 栏 目

    企业400电话 网络优化推广 AI电话机器人 呼叫中心 网站建设 商标✡知产 微网小程序 电商运营 彩铃•短信 增值拓展业务
    使用c#构造date数据类型
    /***********************************
    作者: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列的值,这样输出的是一串二进制数
    您可能感兴趣的文章:
    • C#基础之数据类型转换
    • c#数据类型基础
    • C# double和decimal数据类型以截断的方式保留指定的小数位数
    • C#实现任意数据类型转成json格式输出
    • 浅析C#数据类型转换的几种形式
    • 数据库 数据类型float到C#类型decimal, float数据类型转化无效
    • C#判断数据类型的简单示例代码
    • c# 数据类型占用的字节数介绍
    • C#的四种基本数据类型
    上一篇:SQL2005 服务器因重装改名后出错的说明
    下一篇:SQLServer2005 批量查询自定义对象脚本
  • 相关文章
  • 

    © 2016-2020 巨人网络通讯 版权所有

    《增值电信业务经营许可证》 苏ICP备15040257号-8

    使用c#构造date数据类型 使用,构造,date,数据,类型,