SQL server v17:如何将smalldatetime值转换为datetime

时间:2018-02-15 12:58:33

标签: sql-server casting datetime-format

我使用以下查询来插入数据:

 CASE(isdate([Date])) 
            WHEN 1 THEN [date] 
            WHEN 0 THEN cast(substring([Date],0,5) - 2 as smalldatetime)
            ELSE [date] END 

现在,datetime列的日期为smalldatetime格式。如何将smalldatetime格式化日期转换为datetime格式,而列类型为datetime。

示例:对于数字日期41298,结果为1911-04-21 00:00:00,但实际预期结果为2013-01-26 00:00:00.000

3 个答案:

答案 0 :(得分:0)

我已尝试过您的给定值并将其转换为预期结果,请查看一下;

SELECT CAST(CAST(41298 AS smalldatetime) AS DATE) AS Date
SELECT CAST(41298 AS smalldatetime) AS Date

输出:

enter image description here

答案 1 :(得分:0)

我认为你正在寻找这样的东西:

(CASE WHEN ISNUMERIC([Date]) = 1
      THEN DATEADD(day, CAST([Date] as int), '1899-12-31')
      WHEN iSDATE([Date]) = 1
      THEN CAST([date] as smalldatetime)
 END)

值41298看起来像Excel格式的日期。这些从1899年的最后一天开始计算。

答案 2 :(得分:0)

另一个选项是DateAdd

widget.datasource.items.sort(
  function(a, b) {
    if (a.Month > b.Month) {
      return 1;
    } else {
      return -1;
    }
  }
);

返回

Select DateAdd(DAY,41298,'1900-01-01')