sql里面日期能不能只要到年月的

解决方案 »

  1.   

    select convert(varchar(10),getdate(),120)
      

  2.   

    只要到年月什么意思?你可以试试select convert(varchar(7),getdate(),120)+'-01 00:00:00'
      

  3.   

    --可以,如:
    select convert(char(7),getdate(),120)
      

  4.   

    select cast(year(getdate()) as varchar)+'-'+cast(month(getdate()) as varchar)
      

  5.   

    xeqtr1982(ShaKa) 說的沒錯,如果要年月,,如2006-04共七位,則應該是:
    -----------------------------------------------------------------------------
    select convert(varchar(7),getdate(),120)
      

  6.   

    select convert(varchar(7),日期字段,120)
    或DATEPART ( datepart , date ) 
    再部分值连接起来成字符
      

  7.   


     firemonkey(火猴) ( ) 信誉:100  2006-04-29 11:11:00  得分: 0  
     
     
       但是字符串不能进行比较啊,比如我想取时间段在2006年4月的字段怎么办?
      
     
    -----------------------------------Select * from TableName Where DateDiff(mm,時間字段,'2006-04-01')=0
      

  8.   

    datepart()和convert()函數可以搞定
      

  9.   

    如果只用年月,可以考虑用一个smallint (2字节)整形表达
    按月计算,可以使用5000年
      

  10.   

    select convert(char(7),getdate(),120)
    必须是120的参数
      

  11.   

    select convert(varchar(10),getdate(),120)
      

  12.   

    若日期格式是2006-04-09你可以用substr('2006-04-09',1,7)函数,意思是取第一位到第七位,接结果为2006-04,其他格式的类似,'2006-04-09'也可以是变量
      

  13.   

    其实,LZ的问题并不是一个日期转换的问题
    而是如果合理使用数据类型的问题
    不用日期类型表示日期是很常见的
    如LZ的问题:数据类型的考虑
    1、smallint:效率和存储空间都将最优,缺点是不直观
    2、char(6):择中的选择,直观,查询效果不错,但是有一定存储空间损失。用字符串不影响比较
    3、smalldatetime:需要转换,效率和直观性都不见的好
      

  14.   

    最好统一定义类型udate : sp_addtype udate , 'char(6)' , 'null'