将DateTime转换为Int格式的最佳方法

时间:2010-09-01 16:30:31

标签: tsql sql-server-2000

我需要将Datetime字段转换为特定格式的INT类型。例如,我想要  2000-01-01 00:00:00.000要转换为20010101

在查询中进行比较以进行比较的最佳效果是什么?

类似的东西:

DATEPART(year, orderdate) * 10000 + DATEPART(month, orderdate) * 100 + 
    DATEPART(day, orderdate)

cast(convert(char(8), orderdate, 112) as int) 

最有效的方法是什么?

4 个答案:

答案 0 :(得分:22)

cast(convert(char(8), orderdate, 112) as int)的例子对我来说似乎不错。它可以快速将日期缩减到您需要的格式并转换为int。

从执行计划的角度来看,两者似乎没有区别。

答案 1 :(得分:0)

您可以尝试使用TSQL内置函数。 它不是.NET tick兼容的,但仍然可以快速排序,您可以按需选择GRANULARITY:

date

答案 2 :(得分:-1)

这是你需要的吗

SELECT REPLACE(CONVERT(VARCHAR(10),'2010-01-01 00:00:00.000',101),'-','')

答案 3 :(得分:-2)

当您在代码中直接传递“2010-01-01 00:00:00.000”时,SELECT语句将其视为字符串而不是日期时间数据类型。它与直接选择日期时间字段不同。

没有必要进行外部CAST,因为SQL Server将进行隐式转换,这是一个证明。

DECLARE @t DATETIME = '2010-01-10 00:00:00.000',@u INT
SELECT @u = CONVERT(CHAR(8), @t, 112)

IF ISNUMERIC(@u) = 1
PRINT 'Integer'