因为要直接绑定(数据太多,不能一个个加),所以再通过函数取转换不太方便
直接用nchar去保存 又好像不妥,有更好的解决办法吗

解决方案 »

  1.   

    nchar 还比较好点...
    datatime 太麻烦....
      

  2.   

    当然是用时间字段.不要怕麻烦,其实根本就不麻烦,而是你对SQL对数据库的应用了解太少.
      

  3.   

    数据只要 年月而已
    要 smalldatetime 还要年月日都要
    进出都要转换不是很麻烦
      

  4.   

    麻烦也没办法啊,用别的类型会带来更大的麻烦
    取出的时候直接在SQL语句中转换,没什么麻烦的
    关键是你要设计好你自己的程序
    用一个函数搞定数据库的操作,不要重复得编,这样就不会很麻烦了
      

  5.   

    澄清一下概念:日期(datetime)字段在SQL Server数据库表中是按照double类型的数字保存的,占4或者8个字节,而不是按照年月日十分秒的字符串保存。整数部分保存日期,小数部分保存午夜之后的毫秒(或者微秒数,我记不清了)。因此,要想知道两个日期哪一个大,只要比较数值大小;要想知道两个日期之间差多少天,只要简单地用数值相减。可以执行命令 “print getdate()+7”看看结果。所有关于日期时间计算、比较的操作效率得益于这种结构设计。可以想见,如果保存为字符串,那么系统在索引、SQL查找的时候多么浪费效率呀。至于用户是用字符串还是日期时间类型,可以按照自己的喜好。不过我相信了解得越多越能够做出优异的判断。
      

  6.   

    使用datetime保存日期,不包含时间,也可以用触发器将时间部分自动去掉,而不需要用户特别写转换。
      

  7.   

    楼上说的挺有道理,确实应该用DataTime
      

  8.   

    如果有排序、检索、运算等操作的话还是用datetime或是smalldatetime吧,效率如楼上所说。
      

  9.   

    从数据库设计的角度来说当然是datetime nchar做统计,查询的时候性能太差了
      

  10.   

    datetime 这个是肯定的按照你的要求可以这么实现,也很容易
    System.DateTime currentTime=new System.DateTime(); 
    1.1 取当前年月日时分秒 
    currentTime=System.DateTime.Now; 
    1.2 取当前年 
    int 年=currentTime.Year; 
    1.3 取当前月 
    int 月=currentTime.Month; 
    1.4 取当前日 
    int 日=currentTime.Day; 
    1.5 取当前时 
    int 时=currentTime.Hour; 
    1.6 取当前分 
    int 分=currentTime.Minute; 
    1.7 取当前秒 
    int 秒=currentTime.Second; 
    1.8 取当前毫秒 
    int 毫秒=currentTime.Millisecond;
      

  11.   

    同意"如果有排序、检索、运算等操作的话还是用datetime或是smalldatetime吧"
      

  12.   

    没错,数据操作的时候还是要datatime才行
    楼上的提到:取出的时候直接在SQL语句中转换
    不知道怎么实现的
      

  13.   

    使用datetime保存日期,不包含时间,也可以用触发器将时间部分自动去掉
      

  14.   

    create table #TmpA
    (
    学生姓名 varchar(32),
    作业标题  VARCHAR(30),
    分数 decimal(18,2),)
    --插入数据
    Insert #TmpA Values( 'S',  '1', 10)
    Insert #TmpA Values( 'S', '2', 20)
    Insert #TmpA Values( 'S',  '3', 30)
    Insert #TmpA Values( 'S',  '4', 40)
    Insert #TmpA Values( 'B', '1', 10)
    Insert #TmpA Values( 'B',  '2', 20)
    Insert #TmpA Values( 'B',  '3', 30)
    Insert #TmpA Values( 'B',  '4', 40)
    --数据查询Declare @Sql1 Nvarchar(4000)
    Declare @Sql2 Nvarchar(4000)
    Set @Sql1='Select DIstinct 学生姓名,'Select @Sql1=@Sql1+'(Select 分数 from #TmpA Where 作业标题='+作业标题+' And 学生姓名=A.学生姓名 ) As '''+'作业'+作业标题+''','
    from (Select Distinct 作业标题 from #TmpA ) A Order By 作业标题Select @Sql1=Left(@Sql1,Len(@Sql1)-1)+'from #TmpA A Order By 学生姓名 Desc'
    EXEC(@Sql1)
     DROP
    TABLE #TmpA你试试吧..我按上边给你改了改