萬盛學電腦網

 萬盛學電腦網 >> 數據庫 >> sql server教程 >> SQLServer時間格式淺析

SQLServer時間格式淺析

 

 www.iTbulo.com-OIJml

sql server時間格式淺析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

copyright © 萬盛學電腦網 all rights reserved