首页 > 代码库 > SQL 存储过程语句拼接愁人的时间类型

SQL 存储过程语句拼接愁人的时间类型

  背景介绍:有一个小需求 要根据传入的起止时间,没一个小时统计一下数据的平均值,我就想到了用存储过程来实现。

  sql写完之后一执行,

  技术分享
  咦~怎么回事 ,我没有转换类型的地方啊,难道是 语句拼接出错了。

  下面是定义的两个时间变量 格式都是DateTime格式的,

  技术分享

  技术分享

  问题就出在了时间类型的语句拼接上,想了两个解决方案,

  拼接的时候把时间改为varchar类型的,或者直接把原来的时间类型定义为varchar类型的。

  类型转换用CAST() 函数
  

  改完之后 一执行

  技术分享

  数据有了,但是有点不对啊,我自己加的测试数据是一个小时一条数据啊,怎么会有一行 是 0 呢。
  仔细查看后 发现查询是的时间有问题。(这难道是sql 默认的时间格式吗)

  技术分享

  存储过程中用于查询的两个时间数据的格式 只是精确到分钟,而我自己添加的测试数据 中有连续的几个小时的数据都是 59分 多少多少秒,就导致进行运算的时候
  把本该数据这一小时内的数据 计算到了上一个小时中去(很庆幸自己添加的数据帮自己找到了一个隐藏的隐患啊)。

  解决方法:

  Select CONVERT(varchar(100), GETDATE(), 25): 2006-05-16 10:57:47.250

  修改一下时间格式。

SQL 存储过程语句拼接愁人的时间类型