当前位置: 首页 > 面试题库 >

将0转换为DATE和DATETIME

董花蜂
2023-03-14
问题内容

我只是偶然发现了这一点,找不到任何技术上的解释:

在SQL Server 2014中:

SELECT CAST('' AS DATETIME);
1900-01-01 00:00:00.000

SELECT CAST(0 AS DATETIME);
1900-01-01 00:00:00.000

SELECT CAST('' AS DATE);
1900-01-01

SELECT CAST(CAST(0 AS DATETIME) AS DATE);
1900-01-01

SELECT CAST(0 AS DATE);

消息529,级别16,状态2,第4行
不允许从数据类型int到日期的显式转换。

为什么CASTfrom从一个空字符串到DATEandDATETIME起作用,但是from0只能作为as起作用DATETIME

我对技术说明感兴趣


问题答案:

我认为这与Microsoft选择支持的问题有关。或多或少地归结为以下事实:允许从数值到日期时间的数据转换,而日期不允许从数值到数据的转换。在SQL
Server中,它必须先将0转换为0.000000000之类的数值,然后再转换为该数字的datetime。我的示例表明,可以将当前日期转换为数字值,然后再转换为日期时间。但是,转换为日期会引发错误。我想避免如果您尝试将值0.5转换为日期时可能会出现的舍入问题。在这种情况下,将对SQL引擎进行编程,以将0.5隐式转换为日期1900-01-01或1900-01-02。在这种情况下,您必须对应该返回什么日期做出任意决定。

这有效:

--produces a numeric value like 42746.97660799
select cast(getdate() as numeric(18,8))

select cast(42746.97660799 as datetime)

虽然这会引发您收到的相同错误:

select cast(42746.97660799 as date)

消息529,级别16,状态2,行5不允许从数字类型的数据类型到日期的显式转换。



 类似资料:
  • 问题内容: 如果我有一个PHP字符串,其格式为(例如10-16-2003),如何正确地将其转换为a ,然后转换为a 的格式?我问两个唯一的原因,并是因为我需要一个在一个地方,和其他在不同的地方。 问题答案: 在第一次约会时使用,然后将其转换回: 请注意,在函数中使用正斜杠和连字符之间是有区别的。引用php.net: 通过查看各个组成部分之间的分隔符,可以消除m/d/y或dmy格式的日期的歧义:如果

  • 问题内容: 我正在尝试将Json日期字符串转换为Java日期格式。但是,当涉及到“ return df.parse(tarih)”行时,它将给出错误。 JSON: Java代码: 当我调用此方法时,tarih参数为:/ Date(1323087840000 + 0200)/ 问题答案: 因为您对某个对象感兴趣,所以我认为JSON是Unix时间戳。 因此,我建议您使用Date(long毫秒)构造函数

  • 本文向大家介绍将MySQL null转换为0?,包括了将MySQL null转换为0?的使用技巧和注意事项,需要的朋友参考一下 使用IFNULL或function以便将MySQL NULL转换为0。 语法如下 让我们首先创建一个表。创建表的查询如下 使用insert命令在表中插入一些记录。 查询如下 使用select语句显示表中的所有记录。 查询如下 以下是输出 这是将MySQL NULL转换为0

  • 我们有一个旧表,其中日期字段以多种格式存储在VARCHAR2中。现在我们计划: 1) 将这些数据存储在具有适当日期字段的视图中。 2) 还以单一一致的格式(如MM/DD/YYYY)存储这些内容。 这是为#1所做的:创建一个函数,以便它可以解析VARCHAR2并将其转换为不同格式的DATE,例如: 对于#2,我们仍然需要将上述两个日期转换为MM/DD/YYYY,其中一个已采用此格式,因此我们需要先转

  • 错误信息 org.codehaus.jackson.map.jsonMappingException:无法从字符串值“02/23/2013”构造java.util.date实例:无效表示(错误:无法解析日期“02/23/2013”:与任何标准形式(“YYYY-MM-DD't'hh:mm:ss.sssz”、“YYYY-MM-DD't'hh:mm:ss.sss'z'”、“EEE,dd MMM yyyy

  • 本文向大家介绍如何在MySQL中将DATETIME转换为DATE?,包括了如何在MySQL中将DATETIME转换为DATE?的使用技巧和注意事项,需要的朋友参考一下 要将DATETIME转换为MySQL中的DATE,请使用函数。语法如下- 要了解上述语法,让我们首先创建一个表- 借助insert命令将datetime插入表中。查询如下- 显示上面插入的所有记录。查询如下- 以下是输出- 现在,您