将Date转换为Float会损失两天

时间:2018-06-27 07:44:37

标签: sql sql-server-2017

早上好

我有一个有趣的情况:

2018年6月1日= 43252作为整数 2018年5月30日= 43250为整数

我尝试使用以下代码将日期转换为相应月份的第一天(报告月份):

DECLARE @InputDate DateTime, @Result  Float, @Date DateTime

Set @InputDate = '2018/06/18 23:13:05'
If isDate(@InputDate) = 0 
   BEGIN
     Set @Result = 0
   END
ELSE
  BEGIN
    Set @Date = DATEFROMPARTS(Year(@InputDate), Month(@InputDate), 1)
    Set @Result = cast (cast(@Date as datetime) as float) 
    Select @Date, @Result
  END 

@Date的结果如预期般为'2018-06-01 00:00:00.000',但@Result = 43250的结果为2018年5月30日。这是怎么回事?

0 个答案:

没有答案