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

了解带有min(datetime)的SQL Server行为

松德曜
2023-03-14
问题内容

(长话短说,我只是一个愚蠢的假设,我确定一栏是一个日期时间,而且不是-
所以不要指望在这个问题中找到任何有趣的东西,把它留在这里以使dems正确地被他接受回答)

我写了一个简单的查询,像这样:

SELECT ID, MIN(DateMadeActive) AS DateMadeActive
FROM RecordStateField WHERE RecordStatusID in (2, 3)
GROUP BY ID

其中DateMadeActive是日期时间列。这返回了我期望的结果:

ID  DateMadeActive
1   20/06/2011 16:15:04
2   20/06/2011 16:14:28

现在,我将其插入到新表中,但是将MIN(DateMadeActive)的结果插入另一个表的datetime列中时,出现了此错误:

Msg 8115, Level 16, State 2, Line 1
Arithmetic overflow error converting expression to data type datetime.

因此,要对此进行测试,我将选择更改为:

SELECT ID, CAST(Min(DateMadeActive) as datetime) AS DateMadeActive
FROM RecordStateField WHERE RecordStatusID in (2, 3)
GROUP BY ID

同样的例外。我可以这样写,并使其工作:

SELECT ID, CONVERT(datetime, Min(DateMadeActive), 103) AS DateMadeActive
FROM RecordStateField WHERE RecordStatusID in (2, 3)
GROUP BY ID

这样我就可以使它工作,但这使我感到困惑。MIN(expression)的文档说返回类型应该与expression相同,但是似乎正在发生的是MIN(datetime)html" target="_blank">返回nvarchar(255)。我可以通过运行以下命令来确认这一点:

SELECT ID, Min(DateMadeActive) AS DateMadeActive
INTO TestTable
FROM RecordStateField WHERE RecordStatusID in (2, 3)
GROUP BY ID

而且我可以看到DateMadeActive列的类型为nvarchar(255)。有人对此有任何启示吗?只是MSDN中的一个文档错误?


问题答案:

在我看来,DateMadeActivein[RecordStateField]是VARCHAR(255)字段。您可以发布表定义吗?

我问这个是因为MIN()之前已经为我更改了类型。因此,如果结果是VARCHAR(255),则似乎输入也必须是VARCHAR(255)



 类似资料:
  • 我有一个这种格式的字符串:,我想解析它,这样我就可以说,例如,它是星期几。但是我正在努力应对时区偏移。如果我做了,那么我最终会得到这样的东西: 它对时区做了一些事情,但是如果我想显示时区信息,我该如何处理? 如果有问题,我之前已经使用设置了默认时区。 更新:如果字符串具有正时区,例如,则输出的最后一部分是:

  • 克隆或者下载源码 在源码里面有一个 Test Sqlserver的项目 修改成你的sqlserver的db链接字符串就可以了,其他的参数你看需要自行修改 F5跑起来玩玩吧

  • 问题内容: 这是我的项目表 这是我的发货表 我想为提供最小数量的项目命名。 我试过了。但是它只返回最小数量值,这是我的代码 问题答案:

  • 本文向大家介绍简单明了带你了解CSS Modules,包括了简单明了带你了解CSS Modules的使用技巧和注意事项,需要的朋友参考一下 层叠样式表 我们知道,css的全名叫做层叠样式表,这个“层叠”到底是什么意思呢? 有一种解释是,如果你先写了一条样式规则(选手1): 然后又在后边写了一条类似的(选手2): 因为名字相同,选手2就会和选手1打起来(让你丫冒充我!)。结果是选手2获胜,class

  • 这是我在申请表中得到的日期: 将psqlDate转换为joda的最佳方式是什么? [编辑] 我可以使用解析方法。它可以很好地使用时间戳,它可以使用T-分割日期和时间的信息。 这应该与良好的模式一起工作: 带有时区的PostgreSQL时间戳的正确模式是什么?

  • 我有一个小的Spring Boot应用程序,它创建了一个RabbitListener,并处理消息(到目前为止都成功了)。我希望在我定义的管理endpoint中看到服务的默认度量(如http://localhost:8082/demo/metrics/jvm.memory.max),但只要我添加了依赖项 默认的“/metrics”endpoint不再公开。我使用的是2.0.2版本。spring-bo