如何在sql server中完成日期转换

时间:2014-05-02 05:47:58

标签: sql sql-server sql-function

我有一个如下所述的查询。

select CAST(0x83360B00 AS Date)

当我在SQL server中运行此查询时,我能够以日期格式获得结果:

2012年12月15日

我想知道的是这是如何产生的。提前谢谢。

2 个答案:

答案 0 :(得分:6)

Sql server将DATE数据类型的内部表示形式存储为1 Jan 0001的大端字节数。

所以0x83360B00是

SELECT 0x83 + 0x36 * 256 + 0x0B * 65536
= 734851 days

添加这些:

DECLARE @Date DATE = '1 Jan 0001'
SELECT DATEADD(dd, 734851, @Date)

返回:

2012-12-15

答案 1 :(得分:0)

可能与对应的转换为varbinary:

SELECT CAST(CAST('2012-12-15' AS DATE) AS VARBINARY)