如何SQL Server 获取当前时间毫秒级

时间:2022-01-18 03:47:21
在查询分析器中使用SELECT GETDATE() 可以获得毫秒级的时间2008-12-14 13:33:27.467,而在存储过程中使用GETDATE()获取的时间赋给时间字段项的是2008-12-14 13:33:27,如何才能在表的时间字段项上获取毫秒级的时间。

21 个解决方案

#1



create table testtable(col1 datetime)

create proc pp1
as
insert into testtable
select getdate()
go

exec pp1

select * from testtable


col1                                                   
------------------------------------------------------ 
2008-12-14 13:54:38.310

(所影响的行数为 1 行)

#2


select convert(varchar(23),getdate(),121)

#3



declare @t table(testtime datetime)

insert into @t
select getdate()
select * from @t
2008-12-14 14:58:35.077


declare @t1 table(testtime smalldatetime)

insert into @t1
select getdate()
select * from @t1
2008-12-14 14:59:00

把你表中该列的数据类型改为datetime型

#4


帮助中---Convert()

#5


按照各位的意见,做了个测试还是不成功

创建的表

CREATE TABLE [dbo].[EventLog] (
[序号] [bigint] IDENTITY (1, 1) NOT NULL ,
[日期] [datetime] NULL ,
[事件源] [char] (20) COLLATE Chinese_PRC_CI_AS NULL ,
[事件类型] [int] NULL ,
[事件描述] [varchar] (500) COLLATE Chinese_PRC_CI_AS NULL 
) ON [PRIMARY]

修改后的存储过程

CREATE PROCEDURE [insert_EventLog]
(
 @事件源_2  [char](20),
 @事件类型_3  [int],
 @事件描述_4  [varchar](500))

AS


 INSERT INTO [ygz_Log].[dbo].[EventLog] 
 ( [日期],
 [事件源],
 [事件类型],
 [事件描述]) 
 
VALUES 
( convert(varchar(23),getdate(),121),
 @事件源_2,
 @事件类型_3,
 @事件描述_4)
GO


执行这个存储过程日期里面获得的时间还是没有毫秒的时间,如何让日期字段里面显示毫秒时间?

#6


create table test(col1 datetime)
go
create proc Pro_test
as
insert into test
select convert(varchar(23),getdate(),121)
end
go
exec pp1

or 
create proc Pro_test
as
inset into test
select getdate()
end

#7


创建的表 
SQL code

CREATE TABLE [dbo].[EventLog] (
    [序号]     [bigint] IDENTITY (1, 1) NOT NULL ,
    [日期]     [datetime] NULL ,
    [事件源]   [char] (20) COLLATE Chinese_PRC_CI_AS NULL ,
    [事件类型] [int] NULL ,
    [事件描述] [varchar] (500) COLLATE Chinese_PRC_CI_AS NULL 
) ON [PRIMARY]
修改后的存储过程 
SQL code

CREATE PROCEDURE [insert_EventLog]
    (
     @事件源_2       [char](20),
     @事件类型_3     [int],
     @事件描述_4     [varchar](500))

AS


 INSERT INTO [ygz_Log].[dbo].[EventLog] 
     ( [日期],
     [事件源],
     [事件类型],
     [事件描述]) 
 
VALUES 
     Getdate(),
     @事件源_2,
     @事件类型_3,
     @事件描述_4)
GO

这样就可以了

#8


你上面的表定义[日期] 是   [datetime]类型,convert(varchar(23),getdate(),121)这句要重新把它转换成日期类型

#9


不懂,帮顶

#10


引用 8 楼 you_tube 的回复:
你上面的表定义[日期] 是  [datetime]类型,convert(varchar(23),getdate(),121)这句要重新把它转换成日期类型


明白了,就是说又转换了一次。
现在就是想让getdate()函数的结果存放到我的表的日期字段里有毫秒数,该如何实现?

#11


是不是日期字段选择datetime类型就不可以显示出毫秒,只是支持到秒,如果需要毫秒就需要使用转换函数把getdate()的结果转换成字符串?

#12


to LZ:
你表中的 [日期] [datetime] NULL 已经是日期型的了,为什么还要convert(varchar(23),getdate(),121)先把日期转成字符串,再转成日期的?

直接getdate()就行了。参照3楼

#13


下面这个存储过程如何实现存储到表里面日期字段的是具有毫秒的时间?
CREATE PROCEDURE [insert_EventLog] 
    ( 
    @事件源_2      [char](20), 
    @事件类型_3    [int], 
    @事件描述_4    [varchar](500)) 

AS 
INSERT INTO [ygz_Log].[dbo].[EventLog] 
    ( [日期], 
    [事件源], 
    [事件类型], 
    [事件描述]) 

VALUES 
    Getdate(), 
    @事件源_2, 
    @事件类型_3, 
    @事件描述_4) 
GO 

#14


CREATE PROCEDURE [insert_EventLog]
    (
     @事件源_2     [char](20),
     @事件类型_3     [int],
     @事件描述_4     [varchar](500))

AS


 INSERT INTO [ygz_Log].[dbo].[EventLog] 
     ( [日期],
     [事件源],
     [事件类型],
     [事件描述]) 
 
VALUES 
    ( convert(varchar(23),getdate(),121),  -- 这儿直接用getdate()     @事件源_2,
     @事件类型_3,
     @事件描述_4)
GO

#15


同样的语句在查询分析里面都是带毫秒的时间,在企业管理器里面的表的字段项选择datetime结果依然还是没有毫秒的。是不是需要在什么地方设置,使得系统时间显示带毫秒,那样我调用datetime函数获取的结果保存在表里面也就具有毫秒的显示了?

#16


不太明白

#17


引用 15 楼 lurenyi 的回复:
同样的语句在查询分析里面都是带毫秒的时间,在企业管理器里面的表的字段项选择datetime结果依然还是没有毫秒的。是不是需要在什么地方设置,使得系统时间显示带毫秒,那样我调用datetime函数获取的结果保存在表里面也就具有毫秒的显示了?


你表里的数据是怎么插进去的?是不是插进去的时候把毫秒截掉了?

#18


你赋过去的时候是不是转成字符串时给截断了。。

#19


直接执行下面这个存储过程,向表里面插入数据,结果在日期字段项里面显示的就只到秒,毫秒的丢哪里了俺也没有搞清楚
CREATE PROCEDURE [insert_EventLog] 
    ( 
    @事件源_2      [char](20), 
    @事件类型_3    [int], 
    @事件描述_4    [varchar](500)) 

AS 
INSERT INTO [ygz_Log].[dbo].[EventLog] 
    ( [日期],  ---Datetime类型
    [事件源], 
    [事件类型], 
    [事件描述]) 

VALUES 
    Getdate(), 
    @事件源_2, 
    @事件类型_3, 
    @事件描述_4) 

#20


结贴了,Datetime类型在表里显示只能到秒,要显示毫秒需要转换成字符串类型,
convert(varchar(23),getdate(),121)
 。多谢各位。

#21


刚好要用毫秒,学习下

#1



create table testtable(col1 datetime)

create proc pp1
as
insert into testtable
select getdate()
go

exec pp1

select * from testtable


col1                                                   
------------------------------------------------------ 
2008-12-14 13:54:38.310

(所影响的行数为 1 行)

#2


select convert(varchar(23),getdate(),121)

#3



declare @t table(testtime datetime)

insert into @t
select getdate()
select * from @t
2008-12-14 14:58:35.077


declare @t1 table(testtime smalldatetime)

insert into @t1
select getdate()
select * from @t1
2008-12-14 14:59:00

把你表中该列的数据类型改为datetime型

#4


帮助中---Convert()

#5


按照各位的意见,做了个测试还是不成功

创建的表

CREATE TABLE [dbo].[EventLog] (
[序号] [bigint] IDENTITY (1, 1) NOT NULL ,
[日期] [datetime] NULL ,
[事件源] [char] (20) COLLATE Chinese_PRC_CI_AS NULL ,
[事件类型] [int] NULL ,
[事件描述] [varchar] (500) COLLATE Chinese_PRC_CI_AS NULL 
) ON [PRIMARY]

修改后的存储过程

CREATE PROCEDURE [insert_EventLog]
(
 @事件源_2  [char](20),
 @事件类型_3  [int],
 @事件描述_4  [varchar](500))

AS


 INSERT INTO [ygz_Log].[dbo].[EventLog] 
 ( [日期],
 [事件源],
 [事件类型],
 [事件描述]) 
 
VALUES 
( convert(varchar(23),getdate(),121),
 @事件源_2,
 @事件类型_3,
 @事件描述_4)
GO


执行这个存储过程日期里面获得的时间还是没有毫秒的时间,如何让日期字段里面显示毫秒时间?

#6


create table test(col1 datetime)
go
create proc Pro_test
as
insert into test
select convert(varchar(23),getdate(),121)
end
go
exec pp1

or 
create proc Pro_test
as
inset into test
select getdate()
end

#7


创建的表 
SQL code

CREATE TABLE [dbo].[EventLog] (
    [序号]     [bigint] IDENTITY (1, 1) NOT NULL ,
    [日期]     [datetime] NULL ,
    [事件源]   [char] (20) COLLATE Chinese_PRC_CI_AS NULL ,
    [事件类型] [int] NULL ,
    [事件描述] [varchar] (500) COLLATE Chinese_PRC_CI_AS NULL 
) ON [PRIMARY]
修改后的存储过程 
SQL code

CREATE PROCEDURE [insert_EventLog]
    (
     @事件源_2       [char](20),
     @事件类型_3     [int],
     @事件描述_4     [varchar](500))

AS


 INSERT INTO [ygz_Log].[dbo].[EventLog] 
     ( [日期],
     [事件源],
     [事件类型],
     [事件描述]) 
 
VALUES 
     Getdate(),
     @事件源_2,
     @事件类型_3,
     @事件描述_4)
GO

这样就可以了

#8


你上面的表定义[日期] 是   [datetime]类型,convert(varchar(23),getdate(),121)这句要重新把它转换成日期类型

#9


不懂,帮顶

#10


引用 8 楼 you_tube 的回复:
你上面的表定义[日期] 是  [datetime]类型,convert(varchar(23),getdate(),121)这句要重新把它转换成日期类型


明白了,就是说又转换了一次。
现在就是想让getdate()函数的结果存放到我的表的日期字段里有毫秒数,该如何实现?

#11


是不是日期字段选择datetime类型就不可以显示出毫秒,只是支持到秒,如果需要毫秒就需要使用转换函数把getdate()的结果转换成字符串?

#12


to LZ:
你表中的 [日期] [datetime] NULL 已经是日期型的了,为什么还要convert(varchar(23),getdate(),121)先把日期转成字符串,再转成日期的?

直接getdate()就行了。参照3楼

#13


下面这个存储过程如何实现存储到表里面日期字段的是具有毫秒的时间?
CREATE PROCEDURE [insert_EventLog] 
    ( 
    @事件源_2      [char](20), 
    @事件类型_3    [int], 
    @事件描述_4    [varchar](500)) 

AS 
INSERT INTO [ygz_Log].[dbo].[EventLog] 
    ( [日期], 
    [事件源], 
    [事件类型], 
    [事件描述]) 

VALUES 
    Getdate(), 
    @事件源_2, 
    @事件类型_3, 
    @事件描述_4) 
GO 

#14


CREATE PROCEDURE [insert_EventLog]
    (
     @事件源_2     [char](20),
     @事件类型_3     [int],
     @事件描述_4     [varchar](500))

AS


 INSERT INTO [ygz_Log].[dbo].[EventLog] 
     ( [日期],
     [事件源],
     [事件类型],
     [事件描述]) 
 
VALUES 
    ( convert(varchar(23),getdate(),121),  -- 这儿直接用getdate()     @事件源_2,
     @事件类型_3,
     @事件描述_4)
GO

#15


同样的语句在查询分析里面都是带毫秒的时间,在企业管理器里面的表的字段项选择datetime结果依然还是没有毫秒的。是不是需要在什么地方设置,使得系统时间显示带毫秒,那样我调用datetime函数获取的结果保存在表里面也就具有毫秒的显示了?

#16


不太明白

#17


引用 15 楼 lurenyi 的回复:
同样的语句在查询分析里面都是带毫秒的时间,在企业管理器里面的表的字段项选择datetime结果依然还是没有毫秒的。是不是需要在什么地方设置,使得系统时间显示带毫秒,那样我调用datetime函数获取的结果保存在表里面也就具有毫秒的显示了?


你表里的数据是怎么插进去的?是不是插进去的时候把毫秒截掉了?

#18


你赋过去的时候是不是转成字符串时给截断了。。

#19


直接执行下面这个存储过程,向表里面插入数据,结果在日期字段项里面显示的就只到秒,毫秒的丢哪里了俺也没有搞清楚
CREATE PROCEDURE [insert_EventLog] 
    ( 
    @事件源_2      [char](20), 
    @事件类型_3    [int], 
    @事件描述_4    [varchar](500)) 

AS 
INSERT INTO [ygz_Log].[dbo].[EventLog] 
    ( [日期],  ---Datetime类型
    [事件源], 
    [事件类型], 
    [事件描述]) 

VALUES 
    Getdate(), 
    @事件源_2, 
    @事件类型_3, 
    @事件描述_4) 

#20


结贴了,Datetime类型在表里显示只能到秒,要显示毫秒需要转换成字符串类型,
convert(varchar(23),getdate(),121)
 。多谢各位。

#21


刚好要用毫秒,学习下