zoukankan      html  css  js  c++  java
  • SQL:存储C#中DateTime类型Ticks的值

    DateTime d = Convert.ToDateTime(System.DateTime.Now.ToString("yyyy-MM-dd"));

    long longBegin = d.Ticks;
    long longEnd = d.AddDays(1).AddMilliseconds(-1).Ticks;

    string sql = "SELECT * FROM tb WHERE TricksField BETWEEN @loginBegin AND @lengEnd";
    SqlCommand cmd 
    = new SqlCommand();
    cmd.Parameters.Add(
    "@loginBegin", DbType.Int64, 64);
    cmd.Parameters.Add(
    "@loginEnd", DbType.Int64, 64);
    cmd.Parameters[
    0].Value = longBegin;
    cmd.Parameters[
    1].Value = longEnd;

    查找今天过生日的. 百万级的数据表,

    可以在c#里生成两个参数,以存储过程,或传参的语句方式执行, 在 TicksField 上建立索引,效率效数量级提升

    //***************************************
    .NET Framework 类库  
    DateTime.Ticks 属性  


    此属性的值表示自 0001 年 1 月 1 日午夜 12:00:00 以来已经过的时间的以 100 毫微秒

    为间隔的间隔数。


    如果确实,要用sql实现,那我们先借助前端程序得到几个数据。
    C# code        DateTime d = Convert.ToDateTime("1900-1-1");
            DateTime d1 = Convert.ToDateTime("0001-1-1");

            TimeSpan t = d - d1;

            Response.Write("1900-1-1 . ticks:" +d.Ticks +"</br>" );
            Response.Write("0001-1-1 . ticks:" + d1.Ticks + "</br>");
            Response.Write(t.TotalMilliseconds.ToString());

    综合下先建立表结构逻辑模型:
    通过使用数据仓库建模思想建立星型模型:
    1事实表
    ID 主键
    CRRQ_ID 日期ID
    PLACE_ID 地点ID
    XNAME_ID 姓名ID
    XX 事实字段

    2日期维表
    CRRQ_ID 日期ID
    CRRQ 日期

    3地点维表
    PLACE_ID 地点ID
    PLACE 地点

    4客户维表
    XNAME_ID 姓名ID
    XNAME 姓名

    再利用DB2数据库的物理优化方法:
    对事实表
     1 数据库分区
     2 表分区 
     3 建立MDC  
     4 建立 MQT 
     5 对联合主键建立位图索引

    4亿条数据的表在数据仓库中只能算小表

  • 相关阅读:
    例2-3
    例2-2
    例2-1
    p14
    第一次作业
    例1-1
    第二次作业(2)
    第二次作业
    第三章3-3
    第三章3-2
  • 原文地址:https://www.cnblogs.com/Fooo/p/1982029.html
Copyright © 2011-2022 走看看