相关疑难解决方法(0)

删除SQL Server中datetime时间部分的最佳方法

从SQL Server中的datetime字段中删除时间部分时,哪种方法提供了最佳性能?

a) select DATEADD(dd, DATEDIFF(dd, 0, getdate()), 0)
Run Code Online (Sandbox Code Playgroud)

要么

b) select cast(convert(char(11), getdate(), 113) as datetime)
Run Code Online (Sandbox Code Playgroud)

第二种方法确实发送了更多的字节,但这可能没有转换速度那么重要.

两者似乎都非常快,但在处理数十万或更多行时速度可能会有所不同?

另外,是否有可能有更好的方法来摆脱SQL中日期时间的时间部分?

sql t-sql sql-server datetime date

501
推荐指数
8
解决办法
73万
查看次数

转换和验证日期字符串的最佳方法

我在存储过程中有一个char(8)变量格式化为ddmmyyyy(此值的质量和有效性未知且超出我的控制范围).将值移动到datetime变量的最有效方法是什么,如果它不是有效的datetime则抛出错误.

DECLARE @Source       char(8)
DECLARE @Destination  datetime

SET @Source='07152009'

--your solution here


SELECT @Destination
Run Code Online (Sandbox Code Playgroud)

这是我能想到的最佳方式:

DECLARE @Source             char(8)
DECLARE @Temp               varchar(10)
DECLARE @Destination        datetime

set @Source='07152009'
SET @Temp=LEFT(@Source,2)+'/'+SUBSTRING(@Source,3,2)+'/'+RIGHT(@Source,4)

IF ISDATE(@Temp)!=1
BEGIN
    RAISERROR('ERROR, invalid date',16,1)
END
SET @Destination=@Temp

SELECT @Source AS Source, @Temp AS  Temp, @Destination AS Destination
Run Code Online (Sandbox Code Playgroud)

编辑这里是我要去的...

DECLARE @Source             char(8)
DECLARE @Destination        datetime

set @Source='07152009'
BEGIN TRY
    SET @Destination=CONVERT(datetime,RIGHT(@Source,4)        -- YYYY
                                      +LEFT(@Source,2)        -- MM
                                      +SUBSTRING(@Source,3,2) -- DD
                             )
END TRY
BEGIN CATCH
    PRINT 'ERROR!!!' --I'll add a little …
Run Code Online (Sandbox Code Playgroud)

t-sql sql-server sql-server-2005

11
推荐指数
2
解决办法
2万
查看次数

日期时间的确定性非可空截断函数

我正在为datetime寻找一个确定性截断函数,这个函数完成了这项工作:

DATEADD(dd, DATEDIFF(dd, 0, @date), 0)
Run Code Online (Sandbox Code Playgroud)

但这应该是持久计算列的输入,它将成为主键的一部分,因此它必须是不可为空的.所以我做了这个:

ISNULL(DATEADD(dd, DATEDIFF(dd, 0, @date), 0), '01.01.1900')
Run Code Online (Sandbox Code Playgroud)

但现在表达变得不确定了.任何人都可以告诉我为什么,以及如何让它确定性?

谢谢!

sql sql-server-2005

2
推荐指数
1
解决办法
150
查看次数

标签 统计

sql ×2

sql-server ×2

sql-server-2005 ×2

t-sql ×2

date ×1

datetime ×1