update 表 set 日期字段=replace(日期字段,'日','1')

解决方案 »

  1.   

    大力哥, 是不是应该是  replace(日期字段,'dd'1') 啊?
      

  2.   

    update sale_fact set sale_time=replace(sale_time,'dd','1')
    where year(sale_time)=2003 and month(sale_time)=7再查看:
    select * from sale_fact where year(sale_time)=2003 and month(sale_time)=7但日期的'日‘并没有改变啊?
      

  3.   

    试试:
    update 表 set 日期字段=replace(日期字段,left(日期字段,2),'1')
      

  4.   

    Syntax error converting datetime from character string.
    还是不行,看来 left()函数不能用于日期变量。
      

  5.   

    那不能用update,只能:select CONVERT(varchar(10),日期字段,120) from 表
      

  6.   

    你是什么意思?
    是要把'日'这个字变成1,还是要把日期的日子设为1
    如果是后者的话:
    update 表 set 日期字段=日期字段-day(日期字段)+1
      

  7.   

    解决了,谢谢: zjcxc(邹建),但能不能告诉我,为什么 datetime 可以 减 day(date_time)呢?
    前者是 datetime类型,后者是int类型啊?这个不明白。请指教。
      

  8.   

    SQL Server2000 中能对 datetime 型字段值进行直接的 + - 运算。
    如果想更保险的话,可以这样:update 表 set 日期字段 = datediff(dd, 日期字段, -day(日期字段)+1)
      

  9.   

    datetime-int是日期加减的一个简单用法,就是直接加减int的天数
    你可以用dateadd函数实现更高级的功能,下面是从SQL SERVER帮助上的相关说明DATEADD
    在向指定日期加上一段时间的基础上,返回新的 datetime 值。语法
    DATEADD ( datepart , number, date ) 参数
    datepart是规定应向日期的哪一部分返回新值的参数。下表列出了 Microsoft® SQL Server™ 识别的日期部分和缩写。日期部分 缩写 
    Year yy, yyyy 
    quarter qq, q 
    Month mm, m 
    dayofyear dy, y 
    Day dd, d 
    Week wk, ww 
    Hour hh 
    minute mi, n 
    second ss, s 
    millisecond ms 
    number是用来增加 datepart 的值。如果指定一个不是整数的值,则将废弃此值的小数部分。例如,如果为 datepart 指定 day,为 number 指定 1.75,则 date 将增加 1。date是返回 datetime 或 smalldatetime 值或日期格式字符串的表达式。有关指定日期的更多信息,请参见 datetime 和 smalldatetime。 如果您只指定年份的最后两位数字,则小于或等于"两位数年份截止期"配置选项的值的最后两位数字的数字所在世纪与截止年所在世纪相同。大于该选项的值的最后两位数字的数字所在世纪为截止年所在世纪的前一个世纪。例如,如果 two digit year cutoff 为 2049(默认),则 49 被解释为 2049,2050 被解释为 1950。为避免模糊,请使用四位数的年份。
      

  10.   

    我还以为是要把 ‘日’这个字改为 1其实只要原来是要把日期改为第一天:update 表 set 时间=CONVERT(varchar(7),日期字段,120)
      

  11.   

    select dateadd(dy,-DAY(GETDATE())+1,GETDATE())
      

  12.   

    declare @dateX smalldatetime
    set @dateX = '2001-1-3'
    --月首
    select @dateX-day(@dateX)+1
    --月末
    select dateadd(month,1,@dateX-day(@dateX)+1)-1
    --本月多少天
    SELECT 32-Day(@dt+(32-Day(@dt)))