sql server 中的 DateTime 数据类型

原创 2004年07月10日 13:30:00

看到这个标题,你我可能都笑了。
你会笑,因为你以为这个东西太小儿科了,还用得着做一个标题?!
我会笑,是因为我确信你看完后会改变你的想法。

首先我引入一个问题:如何与一个DateTime类型的字段值进行相等比较?
其实这个问题看起来容易,但有下面的问题存在:
1、一般来说,用户输入的日期值就是yyyy/mm/dd,不带时、分、秒;
2、数据库中存储的日期值是带时、分、秒的。

所以我必须假定:我们所谓的两个日期相等就是年、月、日相等

两种方法:
1、有了这样的假定,你我都会有这样的想法:把两个日期的年、月、日取出来分别比较就行了,三者相等即可(也可按统一格式做成一个串再比较)。
2、上面的方法虽然可行。但你会发现几乎把日期函数用了个遍!不妨按下面的思路想一下:如果只指定日期,则时间默认为 12:00 AM(午夜)(取自:SQL Server联机帮助)。假定我们要查的日期是2004/7/10,则其实我们想要的就是这一天的00:00:00至23:59:59之间的。提到之间,我们就会想到between...and!!只要 between 2004/7/10 and 2004/7/11 即可了。具体地说:between Cast('2004-7-10' as DateTime) and dateadd(day, 1, Cast('2004-7-10' as DateTime))。但这个方法有一个小小问题,它会把7/11 0点的东西也找到,而这其实不应算做7/10的。如果你还想精益求精的话,就只能用...>=... and ...<... 了。(一般情况下没有必要)

等于讨论完后,再想想大于(或小于)某个日期,我们自然可以还用 between ... and 的,再一次论证上面方法的通用性
注意:有了上面的讨论,你一定明白了,and 后的日期一定要加一天,否则结束日期就不会查到了。

 

好了,今天的“小题大作”就到这里吧。
Good luck!! 7/10

sql server 与oracle 中字段类型的对应

SqlServer 2k转换为Oracle 10g     列名 SqlServer数据类型 SqlServer长度 Oracle数据类型 ...
  • yali1990515
  • yali1990515
  • 2016年01月06日 10:34
  • 5517

SQL SERVER 获取DB中datetime类型值以String形式显示

SQL SERVER 数据库中经常遇到一个需求:获取DB中datetime类型
  • wanglei880526
  • wanglei880526
  • 2014年10月22日 19:11
  • 1787

从 varchar 数据类型到 datetime 数据类型的转换产生一个超出范围的值——可能的解决办法

从 varchar 数据类型到 datetime 数据类型的转换产生一个超出范围的值——解决办法 今天在项目里惊醒了...
  • ahcmm2008
  • ahcmm2008
  • 2014年05月29日 16:22
  • 11351

Sql Server 2005 DATETIME和SMALLDATETIME两种日期时间类型的区别

DATETIME数据类型,所存储的日期范围是1753 年 1 月 1 日开始,到 9999 年12 月 31 日结束(每一个值要求 8 个存储字节);Smalldatetime 数据类型,所存储的日期...
  • xiliuhu
  • xiliuhu
  • 2008年04月18日 00:30
  • 2375

SQL SERVER 2005中的日期时间类型

SQL SERVER 2005中的日期时间类型最后编辑:2011-7-17编辑历史:2011-7-17增加了3.33毫秒描述一.    数据类型 MS SQL Server 2005有datetime...
  • misterliwei
  • misterliwei
  • 2009年12月18日 18:05
  • 26089

关于2147217913 从 char 数据类型到 datetime 数据类型的转换导致 datetime 值越界 的问题解决方法

最近收到玻利维亚客户的反馈,运行程序时总提示:2147217913:La conversión del tipo de datos char a datetime produjo un valor d...
  • derryzhang
  • derryzhang
  • 2009年06月29日 10:14
  • 7835

SQL数据类型datetime

datetime类型处理从1753年1月1日~9999年12月31日的日期和时间数据,精确度为百分之三秒。 datetime的存储长度为8字节,日期和时间各用4个字节存储,第一个4字节存储自1900...
  • xumingjie1658
  • xumingjie1658
  • 2012年04月04日 19:52
  • 8922

csv 导入 sqlserver 的数据类型问题

遇到一个问题,把scv导入数据库时,数字的被自动认为是int,然而超过int范围的值统统被读成null进表。 解决办法是在csv文件下,创建一个名为Schema.ini的文件。格式如下:   Sche...
  • forestsheep
  • forestsheep
  • 2009年10月28日 17:44
  • 2584

SQL Server中DateTime与DateTime2的区别是什么

1、DateTime字段类型对应的时间格式是 yyyy-MM-dd HH:mm:ss.fff ,3个f,它的时间精度为1/300秒,在使用时会舍入到舍入到 .000、.003 或 .007 秒三个增量...
  • whaxrl
  • whaxrl
  • 2015年09月24日 15:49
  • 673

SQL Server 2008---常用数据类型小结

SQL Server 2008---常用数据类型整理
  • qq_24452475
  • qq_24452475
  • 2016年03月23日 23:33
  • 2214
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:sql server 中的 DateTime 数据类型
举报原因:
原因补充:

(最多只允许输入30个字)