数据库中timestamp,date,time类型,在使用SQL查询的时候实在有点不方便
比如一个要求,需要按月统计,如果是string类型存储的date数据,Format("yyyy-mm-dd")
就可以用这样的语句
select count(*) from table group by cast (InputDate) as char(7)
但是如果是用timestamp/date过后,cast无法使用,如果要完成类似功能,如何是好?

解决方案 »

  1.   

    用convert 啊
    convert(类型,字段(或者字段表达式))
      

  2.   

    convert在SQL Sever这些数据库里面支持,但是我用的只是delphi自带的数据类型paradox,这个命令不行
      

  3.   

    group by Cast(Convert(Varchar(20),Col_Name,101) as DateTime)
      

  4.   

    老兄,你们发这些东西的时候,能不能仔细看一下,我说得是paradox,这个东东根本不支持convert
      

  5.   

    where cast(字段名 as char(10)) like '"'+str+'"');
    其中str的格式是“月/日/年“
    如str:="02/%/2002"
      

  6.   

    我这个支持paradox
    的试过,
      

  7.   

    cast这个动动我试过了,cast as char(10)过后后的数据非常乱,比如有的是12/2/1991 有的又是 1/2/1991 1非常乱没有办法做到用上述的办法进行group ,继续探讨一下,谢谢
      

  8.   

    CONVERT (data_type[(length)], expression [, style])参数
    expression是任何有效的 Microsoft® SQL Server™ 表达式。有关更多信息,请参见表达式。 data_type目标系统所提供的数据类型,包括 bigint 和 sql_variant。不能使用用户定义的数据类型。有关可用的数据类型的更多信息,请参见数据类型。 lengthnchar、nvarchar、char、varchar、binary 或 varbinary 数据类型的可选参数。 style日期格式样式,借以将 datetime 或 smalldatetime 数据转换为字符数据(nchar、nvarchar、char、varchar、nchar 或 nvarchar 数据类型);或者字符串格式样式,借以将 float、real、money 或 smallmoney 数据转换为字符数据(nchar、nvarchar、char、varchar、nchar 或 nvarchar 数据类型)。SQL Server 支持使用科威特算法的阿拉伯样式中的数据格式。在表中,左侧的两列表示将 datetime 或 smalldatetime 转换为字符数据的 style 值。给 style 值加 100,可获得包括世纪数位的四位年份 (yyyy)。