SQL server v17:如何将 smalldatetime 值转换为 datetime
Posted
技术标签:
【中文标题】SQL server v17:如何将 smalldatetime 值转换为 datetime【英文标题】:SQL server v17 : how to convert smalldatetime value to datetime 【发布时间】:2018-02-15 12:58:32 【问题描述】:我使用以下查询插入数据:
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
【问题讨论】:
您是否尝试将 smalldatetime 中的值存储到 datetime 列中?我认为它将由它自己管理。 【参考方案1】:我认为您正在寻找这样的东西:
(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 年的最后一天开始计算。
【讨论】:
Excel 值也是我最初的想法,但与预期的结果相差一天。【参考方案2】:我已经尝试了您给定的值,它转换为预期的结果,请看一下;
SELECT CAST(CAST(41298 AS smalldatetime) AS DATE) AS Date
SELECT CAST(41298 AS smalldatetime) AS Date
输出:
【讨论】:
【参考方案3】:另一个选项是 DateAdd
Select DateAdd(DAY,41298,'1900-01-01')
返回
2013-01-26 00:00:00.000
【讨论】:
以上是关于SQL server v17:如何将 smalldatetime 值转换为 datetime的主要内容,如果未能解决你的问题,请参考以下文章
ADT 和 SDK 工具更新到 v17 后的 Gson NoClassDefFoundError
Ubuntu 16.04 安装 Kodi v17 “Krypton” Alpha 2