Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/85.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 铸造日期到日期时间,带00:00:00:000_Sql_Sql Server_Tsql - Fatal编程技术网

Sql 铸造日期到日期时间,带00:00:00:000

Sql 铸造日期到日期时间,带00:00:00:000,sql,sql-server,tsql,Sql,Sql Server,Tsql,我正在铸造数亿个数据点。我从2008-10-20 01:33:20 023开始,我需要返回2008-10-20 00:00:00:000 我目前执行此操作的方式是: SELECT CAST(CAST('2008-10-20 01:33:20 023' AS DATE) AS DATETIME 这将执行两个操作,因为有两个强制转换 有没有办法只做一次操作就可以做到这一点?试试这个 select DATEADD(dd, DATEDIFF(dd, 0, COL),0) from TABLE 如果只

我正在铸造数亿个数据点。我从
2008-10-20 01:33:20 023开始,我需要返回
2008-10-20 00:00:00:000

我目前执行此操作的方式是:

SELECT CAST(CAST('2008-10-20 01:33:20 023' AS DATE) AS DATETIME
这将执行两个操作,因为有两个强制转换

有没有办法只做一次操作就可以做到这一点?

试试这个

select DATEADD(dd, DATEDIFF(dd, 0, COL),0) from TABLE

如果只是一次性验证,则可以避免使用

where DateTimeWithTime >= DateTimeNoTime 
  and DateTimeWithTime <  DataAdd(dd,1,DateTimeNoTime)
其中DateTimeWithTime>=DateTimeNoTime
和DateTimeWithTime
您可以使用下面的查询获取日期00:00:000

DECLARE @TestDate DateTime
SET @TestDate = '2012-04-25 03:15.804'
SELECT CAST(CONVERT(nvarchar(10), @TestDate, 101) AS DATETIME)
RESULT: '2012-04-25 00:00:00.000'

您可以这样做:
cast(左(第10列)为datetime)
,但我认为您的方法没有问题。谢谢,但这也是在做两个操作?从一个包含示例数据的表开始,执行两种方法并进行比较。(参见统计数据、实际执行计划等)同样,你应该这样做,因为一方已经是00时间了,而你到目前为止还不能投那个么多?。。。