请教如何将sql server数据库中的datetime字段值都更改为日期型不要时间只显示日期.

时间:2022-09-21 19:11:58
请教如何将sql server数据库中的datetime字段值都更改为日期型不要时间只显示日期.
表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'--重命名列

#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类型,这样能实现吗?有可能吗?

#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)

#12


用varchar来代替Datetime类型

或者你可以只在显示时:
Select convert(varchar(10),时间,120) From 表名

#13


知道把一列转换的查询语句:
select convert(varchar(10),riqi,20) as riqi from Table_one

Update语句,可能上面已经有答案了吧.

#14


显示时转换一下不就行了呀

cast 
convert

#15


--将其转为字符串再转为日期时间型
update 表
set 时间字段=convert(datetime,convert(char(10),时间字段,120))

#16


将列的类型改为smalldatetime,然后使用upate语句更新。

#17


拜托,回答请专业点,或看清楼主要求再回答

#18


按楼主的要求,在SQL中应该没有办法做到,但如果还要通过其他层面输出的话,那就可以处理一下.

#19


up

#20


我给楼主一个思路吧,用两个列来实现,
一个列是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 行)

#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'--重命名列

#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类型,这样能实现吗?有可能吗?

#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)

#12


用varchar来代替Datetime类型

或者你可以只在显示时:
Select convert(varchar(10),时间,120) From 表名

#13


知道把一列转换的查询语句:
select convert(varchar(10),riqi,20) as riqi from Table_one

Update语句,可能上面已经有答案了吧.

#14


显示时转换一下不就行了呀

cast 
convert

#15


--将其转为字符串再转为日期时间型
update 表
set 时间字段=convert(datetime,convert(char(10),时间字段,120))

#16


将列的类型改为smalldatetime,然后使用upate语句更新。

#17


拜托,回答请专业点,或看清楼主要求再回答

#18


按楼主的要求,在SQL中应该没有办法做到,但如果还要通过其他层面输出的话,那就可以处理一下.

#19


up

#20


我给楼主一个思路吧,用两个列来实现,
一个列是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 行)

#22


我的方法,不会对目前的程序有影响,因为具体处理时还是针对日期型字段,但是显示时,用字符型字段,就是多出一个字段。效率不会有多大影响。
(当然了,如果单纯为了显示的话,也可以在客户端实现转换)