表Table_one 的字段riqi是DateTime类型,里面显示的是日期时间,比如2007-10-21 11:34:51
我要将这个riqi字段的值都改为只显示日期2007-10-21,不要后面的时间。但是最好Datetime类型不变。
只手工修改一下目前的值
sql server的Update 语句怎么写呢?谢谢!
22 个解决方案
#1
convert(varchar(10),时间, 120)--在联机帮助有convert转换的格式列表,在此不作说明了120为格式
#2
我要修改的是所有记录阿,完整的语句怎么写?
#3
我要的是sql 语句
#4
应该是update吧?怎么写?
#5
我不是要查询,是要修改数据库字段值!应该是update吧?
#6
只用新列两列
alter table t add col1 varchar(10)
update t
set col1=convert(varchar(10),时间列, 120)
alter table t drop column 时间列
sp_rename 't.col1',时间列,'column'--重命名列
alter table t add col1 varchar(10)
update t
set col1=convert(varchar(10),时间列, 120)
alter table t drop column 时间列
sp_rename 't.col1',时间列,'column'--重命名列
#7
新增一列,
在企业管理器里要调整列的顺序
在企业管理器里要调整列的顺序
#8
alter table Table_one alter column riqi varchar(30)
update Table_one set riqi=convert(varchar(10),cast(c as datetime),120)
alter table Table_one alter column riqi varchar(10)
#9
我测试了,这样搞,字段类型因为要求保持不变,最后都是2007-10-21 00.00.00.000
后面都是00.00.00.000这样的,永远去不掉嘛,我要只显示日期,不要显示这些00.00.00.000
但是保持字段还是datetime类型,这样能实现吗?有可能吗?
后面都是00.00.00.000这样的,永远去不掉嘛,我要只显示日期,不要显示这些00.00.00.000
但是保持字段还是datetime类型,这样能实现吗?有可能吗?
#10
no way
#11
楼主的资料表时间定义的是datetiem 类型,要把datetime 改为 varchar(10)
--先更新
update t
set date1=convert(varchar(10),date1,120)
--这时在表里会出现 2007-11-20 00:00:00 的情况
alter table t
alter column date1 varchar(10)
--先更新
update t
set date1=convert(varchar(10),date1,120)
--这时在表里会出现 2007-11-20 00:00:00 的情况
alter table t
alter column date1 varchar(10)
#12
用varchar来代替Datetime类型
或者你可以只在显示时:
Select convert(varchar(10),时间,120) From 表名
或者你可以只在显示时:
Select convert(varchar(10),时间,120) From 表名
#13
知道把一列转换的查询语句:
select convert(varchar(10),riqi,20) as riqi from Table_one
Update语句,可能上面已经有答案了吧.
select convert(varchar(10),riqi,20) as riqi from Table_one
Update语句,可能上面已经有答案了吧.
#14
显示时转换一下不就行了呀
cast
convert
cast
convert
#15
--将其转为字符串再转为日期时间型
update 表
set 时间字段=convert(datetime,convert(char(10),时间字段,120))
update 表
set 时间字段=convert(datetime,convert(char(10),时间字段,120))
#16
将列的类型改为smalldatetime,然后使用upate语句更新。
#17
拜托,回答请专业点,或看清楼主要求再回答
#18
按楼主的要求,在SQL中应该没有办法做到,但如果还要通过其他层面输出的话,那就可以处理一下.
#19
up
#20
我给楼主一个思路吧,用两个列来实现,
一个列是datatime型,一个列是char(10)型,前一个存贮具体的时间,因为时间无法不显示。所以将后者设置成计算列。通过前一个自动生成一个字符型的日期,一定没有时间的。
表脚本如下:
一个列是datatime型,一个列是char(10)型,前一个存贮具体的时间,因为时间无法不显示。所以将后者设置成计算列。通过前一个自动生成一个字符型的日期,一定没有时间的。
表脚本如下:
CREATE TABLE [dbo].[TABLE1] (
[one] [datetime] NULL ,
[two] AS (convert(char(10),[one],111)) ,
[text] [char] (10) COLLATE Chinese_PRC_CI_AS NULL
) ON [PRIMARY]
#21
one two text
------------------------------------------------------ ---------- ----------
2007-11-26 08:08:46.263 2007/11/26 asdfadsf
2007-11-26 08:08:47.123 2007/11/26 asdfsadf
2007-11-26 08:08:47.763 2007/11/26 asdf
2007-11-26 08:08:48.230 2007/11/26 asdf
2007-11-26 08:08:48.653 2007/11/26 asdf
(所影响的行数为 5 行)
------------------------------------------------------ ---------- ----------
2007-11-26 08:08:46.263 2007/11/26 asdfadsf
2007-11-26 08:08:47.123 2007/11/26 asdfsadf
2007-11-26 08:08:47.763 2007/11/26 asdf
2007-11-26 08:08:48.230 2007/11/26 asdf
2007-11-26 08:08:48.653 2007/11/26 asdf
(所影响的行数为 5 行)
#22
我的方法,不会对目前的程序有影响,因为具体处理时还是针对日期型字段,但是显示时,用字符型字段,就是多出一个字段。效率不会有多大影响。
(当然了,如果单纯为了显示的话,也可以在客户端实现转换)
(当然了,如果单纯为了显示的话,也可以在客户端实现转换)
#1
convert(varchar(10),时间, 120)--在联机帮助有convert转换的格式列表,在此不作说明了120为格式
#2
我要修改的是所有记录阿,完整的语句怎么写?
#3
我要的是sql 语句
#4
应该是update吧?怎么写?
#5
我不是要查询,是要修改数据库字段值!应该是update吧?
#6
只用新列两列
alter table t add col1 varchar(10)
update t
set col1=convert(varchar(10),时间列, 120)
alter table t drop column 时间列
sp_rename 't.col1',时间列,'column'--重命名列
alter table t add col1 varchar(10)
update t
set col1=convert(varchar(10),时间列, 120)
alter table t drop column 时间列
sp_rename 't.col1',时间列,'column'--重命名列
#7
新增一列,
在企业管理器里要调整列的顺序
在企业管理器里要调整列的顺序
#8
alter table Table_one alter column riqi varchar(30)
update Table_one set riqi=convert(varchar(10),cast(c as datetime),120)
alter table Table_one alter column riqi varchar(10)
#9
我测试了,这样搞,字段类型因为要求保持不变,最后都是2007-10-21 00.00.00.000
后面都是00.00.00.000这样的,永远去不掉嘛,我要只显示日期,不要显示这些00.00.00.000
但是保持字段还是datetime类型,这样能实现吗?有可能吗?
后面都是00.00.00.000这样的,永远去不掉嘛,我要只显示日期,不要显示这些00.00.00.000
但是保持字段还是datetime类型,这样能实现吗?有可能吗?
#10
no way
#11
楼主的资料表时间定义的是datetiem 类型,要把datetime 改为 varchar(10)
--先更新
update t
set date1=convert(varchar(10),date1,120)
--这时在表里会出现 2007-11-20 00:00:00 的情况
alter table t
alter column date1 varchar(10)
--先更新
update t
set date1=convert(varchar(10),date1,120)
--这时在表里会出现 2007-11-20 00:00:00 的情况
alter table t
alter column date1 varchar(10)
#12
用varchar来代替Datetime类型
或者你可以只在显示时:
Select convert(varchar(10),时间,120) From 表名
或者你可以只在显示时:
Select convert(varchar(10),时间,120) From 表名
#13
知道把一列转换的查询语句:
select convert(varchar(10),riqi,20) as riqi from Table_one
Update语句,可能上面已经有答案了吧.
select convert(varchar(10),riqi,20) as riqi from Table_one
Update语句,可能上面已经有答案了吧.
#14
显示时转换一下不就行了呀
cast
convert
cast
convert
#15
--将其转为字符串再转为日期时间型
update 表
set 时间字段=convert(datetime,convert(char(10),时间字段,120))
update 表
set 时间字段=convert(datetime,convert(char(10),时间字段,120))
#16
将列的类型改为smalldatetime,然后使用upate语句更新。
#17
拜托,回答请专业点,或看清楼主要求再回答
#18
按楼主的要求,在SQL中应该没有办法做到,但如果还要通过其他层面输出的话,那就可以处理一下.
#19
up
#20
我给楼主一个思路吧,用两个列来实现,
一个列是datatime型,一个列是char(10)型,前一个存贮具体的时间,因为时间无法不显示。所以将后者设置成计算列。通过前一个自动生成一个字符型的日期,一定没有时间的。
表脚本如下:
一个列是datatime型,一个列是char(10)型,前一个存贮具体的时间,因为时间无法不显示。所以将后者设置成计算列。通过前一个自动生成一个字符型的日期,一定没有时间的。
表脚本如下:
CREATE TABLE [dbo].[TABLE1] (
[one] [datetime] NULL ,
[two] AS (convert(char(10),[one],111)) ,
[text] [char] (10) COLLATE Chinese_PRC_CI_AS NULL
) ON [PRIMARY]
#21
one two text
------------------------------------------------------ ---------- ----------
2007-11-26 08:08:46.263 2007/11/26 asdfadsf
2007-11-26 08:08:47.123 2007/11/26 asdfsadf
2007-11-26 08:08:47.763 2007/11/26 asdf
2007-11-26 08:08:48.230 2007/11/26 asdf
2007-11-26 08:08:48.653 2007/11/26 asdf
(所影响的行数为 5 行)
------------------------------------------------------ ---------- ----------
2007-11-26 08:08:46.263 2007/11/26 asdfadsf
2007-11-26 08:08:47.123 2007/11/26 asdfsadf
2007-11-26 08:08:47.763 2007/11/26 asdf
2007-11-26 08:08:48.230 2007/11/26 asdf
2007-11-26 08:08:48.653 2007/11/26 asdf
(所影响的行数为 5 行)
#22
我的方法,不会对目前的程序有影响,因为具体处理时还是针对日期型字段,但是显示时,用字符型字段,就是多出一个字段。效率不会有多大影响。
(当然了,如果单纯为了显示的话,也可以在客户端实现转换)
(当然了,如果单纯为了显示的话,也可以在客户端实现转换)