我一字段日期類型允許為空,新增數據日期類型給它是空數據,但提交後報不在日期范圍之類,為何。  
如何解決

解决方案 »

  1.   

    to_date('','YYYY-MM-DD')转换一下试一试
      

  2.   

    新增數據日期類型給它是空數據? 你是給他空數據的嗎?
    這樣好像不行 ,如果控件里沒有數據 就setnull,不要付空的字串
      

  3.   

    代碼中跟本就沒有給它值,不給值就是空。
    我用的是webservice來提交,如果把webservice放在我本機提交沒問題,如果webservice放在別的機子上就出現問題了。
    因為我測試時是沒有問題的,所以我就把程序發布了,想不到用戶用時報錯。
    我想就是webservice向sqlserver提交數據時,空日期字段給數據庫時不是空的有一個默認值,但數據庫不認。
      

  4.   

    是不是.net處理日期為空時有bug呀。
      

  5.   

    我也碰到过类似的问题,就是C#代码中给一个时间字段附空值或者不附值,数据库里面并不像我想象的那样也给空值,而是附了‘1900-01-01’. 请教高手为什么???o(∩_∩)o...
      

  6.   

    我感覺是.net生成sql語句時出的錯,我用類型化數據集就不會出錯,非類型化的就出錯。
    如果我的select 語句中沒有日期字段就不會有問題,因為cmdbuild不會為它產生sql語句,所以不會報錯。
    不知類型化數據集是如何會不出錯的。
      

  7.   

    我的保存方法如下. public static bool UpdateDataBase(byte[] bytDS, string[] tableName, string[] tempSql)
        {
            DataSet ds = new DataSet();
            ds = serverbase.DecompressDS(bytDS);
            SqlConnection conn = new SqlConnection(connstring);
            conn.Open();
            SqlTransaction tran = conn.BeginTransaction(); 
            try
            {
                for (int i = 0; i < tableName.Length; i++)
                {
                    SqlCommand cmd = new SqlCommand(tempSql[i], conn);
                    cmd.Transaction = tran;
                    SqlDataAdapter da = new SqlDataAdapter(cmd);
                    SqlCommandBuilder bld = new SqlCommandBuilder(da);
                    da.Update(ds.Tables[tableName[i]]);
                }
                ds.AcceptChanges();
                tran.Commit();
                return true;
            }
            catch
            {
                tran.Rollback(); 
                throw;
            }
        }利用 SqlCommandBuilder生成sql代碼,利用 SqlDataAdapter 進行數據提交。我這是用非類型化數據集進行數據提交。
    如果我定制類型化數據集日期為空時不會報錯,能成功保存。
      

  8.   

    應該不是的,如果我把我本機當webservice服務器,服務用相同的服務,也用的是上面的提交代碼,不會出錯。
      

  9.   

    我记得了,好像服务器与客户端要是同一个系统才行,都是XP或者都是2000,XP的日期数据传到2000上日期数据会变成‘1900-01-01’
      

  10.   

    同是2000也不行,我的電腦是2000呀,現在我用的web服務器也是2000一樣不可以。
      

  11.   

    to etherealkite 
    你的QQ號是多少呀。
      

  12.   

    搞定了
    在web服务里面的保存过程中加上下面代:
     foreach (DataRow dr in ds.Tables["XHMX"].Rows)//處理默認日期不在數據庫合法日期之內的出錯處理(空值默認日期)
        {
                if (Convert.ToDateTime(dr["XHMX_GMRQ"]).Year < 1900 || dr["XHMX_GMRQ"].ToString()=="")
                {
                    dr["XHMX_GMRQ"] = DBNull.Value;               
                }
            }