WEB开发网
开发学院数据库MSSQL Server SQLServer时间格式浅析 阅读

SQLServer时间格式浅析

 2007-11-11 11:06:05 来源:WEB开发网   
核心提示: (标准化越来越近了):namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />www.iTbulo.com-OIJmlsql server(WINDOWS平台上强大的数据库平台)时间格式浅析www.iTbulo.
 

 (标准化越来越近了):namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />www.iTbulo.com-OIJml

sql server(WINDOWS平台上强大的数据库平台)时间格式浅析www.iTbulo.com-OIJml

 www.iTbulo.com-OIJml

数据库中时间日期往往是一个很重要的数据。各个计算机上的时间往往不同,为了在数据库中插入统一的时间,如果是取当前时刻,最好直接从数据库服务器读取。比如有一个表名为tablename的表格,其中columnname字段是当前记录插入时的当前时间,则该插入语句应写为:insert into table name (columnname,…) values (GetDate(),…)。这样GetDate()函数将数据库服务器的当前时间插入该记录中。www.iTbulo.com-OIJml

在查找所有当天的记录前,先来分析一下T-SQL的时间日期表示方式。在T-SQL中,时间日期格式数据类型实际上是一个浮点数类型,记录的是当前时间到1900年1月1日0时的天数,加上剩余的时间化成小数。下面的语句:www.iTbulo.com-OIJml

select getdate() as 当前时间,cast(getdate() as float) as 距1900年1月1日天数www.iTbulo.com-OIJml

将返回:www.iTbulo.com-OIJml

 www.iTbulo.com-OIJml

当前时间             距1900年1月1日天数www.iTbulo.com-OIJml

--------------------------- -----------------------------------------------------www.iTbulo.com-OIJml

2001-11-10 11:05:35.733             37203.462219135799www.iTbulo.com-OIJml

 www.iTbulo.com-OIJml

(1 row(s) affected)www.iTbulo.com-OIJml

 www.iTbulo.com-OIJml

所以要查找当天插入的记录,理所应当的会想到用GetDate()获取两个当前时间,并将前一个用Convert或Cast函数转换为整数(记为IntToday),将后一个转换为浮点数(记为FloatNow),再将需要查找的记录日期也转换为浮点数(记为FloatCheck),只要使用条件”…where FloatCheck between IntToday and FloatNow”就可以找出哪些时间是属于今天的时间。现在看起来确实如此。www.iTbulo.com-OIJml

表格testtable有三个字段,id是一个自动增长的主键,inserttime是记录插入时刻的时间,comment字段是为了方便观察设立的。该表格中共有四条记录,前两条记录是11月9日插入的,后两条是11月10日插入的。www.iTbulo.com-OIJml

第一条SQL语句返回该表格中的所有记录。www.iTbulo.com-OIJml

select * from testtablewww.iTbulo.com-OIJml

 www.iTbulo.com-OIJml

id           inserttime                 commentwww.iTbulo.com-OIJml

------------ -------------------------------------- --------------------------------------------www.iTbulo.com-OIJml

1          2001-11-09 10:28:42.943           第一条记录www.iTbulo.com-OIJml

2          2001-11-09 17:43:22.503           第二条记录www.iTbulo.com-OIJml

3          2001-11-10 11:29:11.907            第三条记录www.iTbulo.com-OIJml

4          2001-11-10 11:29:51.553           第四条记录www.iTbulo.com-OIJml

 www.iTbulo.com-OIJml

(4 row(s) affected)www.iTbulo.com-OIJml

 www.iTbulo.com-OIJml

下面的语尝试选出今天(2001年11月10日)插入的记录,该语句执行时的数据库服务器时间是2001-11-10 11:40:57.800www.iTbulo.com-OIJml

 www.iTbulo.com-OIJml

select * from testtable where cast(inserttime as float) between cast(GetDate() as int) and cast(GetDate() as float)www.iTbulo.com-OIJml

 www.iTbulo.com-OIJml

id           inserttime                 commentwww.iTbulo.com-OIJml

------------ -------------------------------------- --------------------------------------------www.iTbulo.com-OIJml

3&nbs

Tags:SQLServer 时间 格式

编辑录入:coldstar [复制链接] [打 印]
赞助商链接