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

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

  sql写完之后一执行,

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

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

  

  

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

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

  类型转换用CAST() 函数
  

  改完之后 一执行

  

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

  

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

  解决方法:

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

  修改一下时间格式。

时间: 2024-11-08 09:03:38

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

sql 自定义函数--固定格式字符转时间类型

遇到一个德国的客户,他们的时间格式是JJJJ-TT-DD HH:MM:SS,程序按照这个格式将时间插入数据库,但是在sql自带的转换函数convert.cast过程中报错,网上搜了下都说用convert.cast可以直接转换,但是这个客户的机器就是不行,没有办法自己写了个转换函数,供大家参考: 由于自定义函数里面不能直接使用getdate方法:所以先创建了个获取本地时间的小函数: create view v_getdate as select getdate() as now_date 然后是转

MySQL:MySQL日期数据类型、MySQL时间类型详解

一.MySQL 日期类型:日期格式.所占存储空间.日期范围 比较 日期类型        存储空间       日期格式                                       日期范围 ------------          ---------   ---------------------                      ----------------------------------------- datetime          8 bytes  

SQL Server 2008对日期时间类型的改进

微软在备受多年的争议后,终于对日期时间数据类型开刀了,在新版的SQL Server 2008中一口气增加了4种新的日期时间数据类型,包括: Date:一个纯的日期数据类型. Time:一个纯的时间数据类型. DateTime2:新的日期时间类型,将精度提到到了100纳秒. DateTimeOffset:新的日期时间类型,在DateTime2的基础上增加了时区部分. 下面是在SQL Server 2008中日期时间数据类型的一个简单汇总表: 数据类型 格式 取值范围 精度 存储尺寸 date yy

java中存储mysql数据库时间类型【date、time、datetime、timestamp】

在MySQL中对于时间的存储自己见表的时候都是设置的varchar类型的,感觉挺方便的. 昨天拿别人建好的表写代码,发现这张表中时间类型为datetime的,凭感觉试了一下不行,网上查了刚开始试了好几个都是不对的,一脸懵逼. -----------------------------------------------------------------------------------------------------------------------------------------

Sql动态查询拼接字符串的优化

Sql动态查询拼接字符串的优化 最原始的 直接写:string sql="select * from TestTables where 1=1";... 这样的代码效率很低的,这样影响了数据库的索引引用如下所示:private void TestOneMethod()        {             string querySql = "select * from TestTables where 1=1";            if (hasOneCo

25SkypeForBusiness2015进阶篇--新增SQL存储

6.3.5 新增SQL存储 因目前还没有创建侦听器,需要在DNS中预先创建一条侦听器的A记录,注意,这里的DNS记录指向目前的SFB后端存储SQL的IP地址,因为目前我们需要在创建侦听器之前发布拓扑,否则会提示无法找到服务器的错误提示,按照我们的规划,侦听器的IP地址为:172.16.10.23/24,这个后续会做修改

Sql批量修改帝国cms文章发布时间(需unix时间,否则会变为1970-01-01)

在迁移网站时,有时我们需要将帝国cms文章发表时间批量修改为当前时间,在帝国cms后台→系统设置→备份与恢复数据→执行sql语句: update phome_ecms_news set newstime = '2014-07-03'; (ps:phome这个是默认的数据库表前缀,如果创建数据库时有设置成其他的可以自行修改) 这样执行sql语句后刷新所有文章,你会发现时间变为了1970-01-01,这是因为newstime这个类型是int(10),必须是unix时间戳,所以我们必须先把当前时间转换

NewSQL——优化的SQL存储引擎(TokuDB, MemSQL)+?

NewSQL 是对各种新的可扩展/高性能数据库的简称,这类数据库不仅具有NoSQL对海量数据的存储管理能力,还保持了传统数据库支持ACID和SQL等特性. NewSQL 是指这样一类新式的关系型数据库管理系统,针对OLTP(读-写)工作负载,追求提供和NoSQL系统相同的扩展性能,且仍然保持ACID和SQL等特性 (scalable and ACID and (relational and/or sql -access)). 历史 NewSQL一词的提出 NewSQL一词是由451 Group的

sql server 存储过程 拼接SQL 超过8000

问题描述: 公司需要做一个报表,根据人员组织树,点击某一节点的时候,显示下一个直接子节点的表单申请情况,根据表单状态进行分组. 实现思路: 一开始是想通过拼接SELECT SQL,将所有子节点的报表情况union,然后所谓存储过程的结果返回.调试过程中发现,拼接出来的SQL太长,在拼接过程中自动被截断了. 解决思路: 分别执行原本打算拼接的SELECT 语句,将每个结果一次插入一个临时表,最后将所有临时表的数据作为存储过程的结果返回. sql server 存储过程 拼接SQL 超过8000