Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/74.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql Datetime only时间由用户硬编码_Sql_Sql Server_Sql Server 2008_Datetime - Fatal编程技术网

Sql Datetime only时间由用户硬编码

Sql Datetime only时间由用户硬编码,sql,sql-server,sql-server-2008,datetime,Sql,Sql Server,Sql Server 2008,Datetime,先生,在我的数据库表中,在某些地方,我使用的是datetime数据类型,在那个地方,我只需要显式设置特定的时间,因此在那个时候,由于datetime变量,它会采用默认的日期值,并将其附加到用户定义的时间中。请给出任何答案 declare @u as datetime set @u=cast('6:00PM' As DATETIME) select @u 现在我不想要默认日期1900-01-01 18:00:00.000,这里的默认日期是1900-01-01 我需要像18:00:00.000这样

先生,在我的数据库表中,在某些地方,我使用的是datetime数据类型,在那个地方,我只需要显式设置特定的时间,因此在那个时候,由于datetime变量,它会采用默认的日期值,并将其附加到用户定义的时间中。请给出任何答案

declare @u as datetime
set @u=cast('6:00PM' As DATETIME)
select @u
现在我不想要默认日期1900-01-01 18:00:00.000,这里的默认日期是1900-01-01
我需要像18:00:00.000这样的输出

使用
[TIMEDIFF()][1]

declare @u as datetime
set @u=cast('6:00PM' As DATETIME)
select convert(varchar(12), @u, 114)
SELECT TIMEDIFF('1900:01:01 18:00:00.100','1900:01:01 00:00:00.000');

Result:
18:00:00.100000

您使用的是什么数据库和版本?是什么版本的SQL Server?如果您使用的是SQL Server 2008,则可以使用新的数据类型。@shahkalpesh我使用的是SQL Server 2008,但如果您只想记录时间,我不想使用时间数据类型;但是不想使用
时间
数据类型,并且
日期时间
的默认日期也无效,您希望
日期时间
类型的日期部分是什么?ps。如果要避免
时间
,以实现向后兼容性,看看SQL 2005解决方案:先生,现在当我试图再次将其分配给@s变量时,您检查了这段代码,它显示默认日期声明@u为datetime,@s为datetime set@u=cast('6:00PM'为datetime)set@s=convert(varchar(12),@u,114)print@s@Utsav-是的。这是意料之中的。datetime变量将始终具有日期部分和时间部分。如果只需要时间部分,则需要使用数据类型
varchar
time