A. sql Server 中 關於時間 類型的區別
1、首先獲取當前系統資料庫的日期和時間,可以利用函數GETDATE(),select GETDATE();如下圖所示。
B. SQL的數據類型
【三】SQL的數據類型(表的欄位類型)
3.1 四種基本的常用數據類型(表的欄位類型)
1、字元型,2、數值型,3、日期型,4、大對象型
3.1.1 字元型:
字元類型char和varchar2的區別
SCOTT@ prod> create table t1(c1 char(10),c2 varchar2(10));
SCOTT@ prod> insert into t1 values('a','ab');
SCOTT@ prod> select length(c1),length(c2) from t1; char和varchar2默認以byte為計算單位
LENGTH(C1) LENGTH(C2)
---------- ----------
10 2
3.1.2 數值型:
3.1.3 日期型:
系統安裝後,默認日期格式是DD-MON-RR, RR和YY都是表示兩位年份,但RR是有世紀認知的,它將指定日期的年份和當前年份比較後確定年份是上個世紀還是本世紀(如表)。
當前年份 指定日期 RR格式 YY格式
------------------------------------------------------------------------------
1995 27-OCT-95 1995 1995
1995 27-OCT-17 2017 1917
2001 27-OCT-17 2017 2017
2013 27-OCT-95 1995 2095
3.1.4 LOB型:
大對象是10g 引入的,在11g中又重新定義,在一個表的欄位里存儲大容量數據,所有大對象最大都可能達到4G。CLOB,NCLOB,BLOB都是內部的LOB類型,沒有LONG只能有一列的限制。
保存圖片或電影使用BLOB最好、如果是小說則使用CLOB最好。雖然LONG、RAW也可以使用,但LONG是oracle將要廢棄的類型,因此建議用LOB。
雖說將要廢棄,但還沒有完全廢棄,比如oracle 11g里的一些視圖如dba_views,對於text(視圖定義)仍然沿用了LONG類型。
Oracle 11g重新設計了大對象,推出SecureFile Lobs的概念,相關的參數是db_securefile,採用SecureFile Lobs的前提條件是11g以上版本,ASSM管理等,符合這些條件的。BasicFile Lobs也可以轉換成SecureFile Lobs。較之過去的BasicFile Lobs, SecureFile Lobs有幾項改進:
1)壓縮,2)去重,3)加密。
當create table定義LOB列時,也可以使用LOB_storage_clause指定SecureFile Lobs或BasicFile Lobs,而LOB的數據操作則使用Oracle提供的DBMS_LOB包,通過編寫PL/SQL塊完成LOB數據的管理。
3.2 數據類型的轉換
3.2.1 轉換的需求
什麼情況下需要數據類型轉換
1)如果表中的某欄位是日期型的,而日期又是可以進行比較和運算的,這時通常要保證參與比較和運算的數據類型都是日期型。
2)當對函數的參數進行抽(截)取、拼接,或運算等操作時,需要轉換為那個函數的參數要求的數據類型。
3)製表輸出有格式需求的,可將date類型,或number類型轉換為char類型
4)轉換成功是有條件的,有隱性轉換和顯性轉換兩種方式
3.2.2隱性類型轉換:
是指oracle自動完成的類型轉換。在一些帶有明顯意圖的字面值上,可以由Oracle自主判斷進行數據類型的轉換。
一般規律:
①比較、運算或連接時:
SQL> select empno,ename from emp where empno='7788'
empno本來是數值類型的,這里字元'7788'隱性轉換成數值7788
SQL> SELECT '12.5'+11 FROM al;
將字元型『12.5』運轉成數字型再求和
SQL> SELECT 10+('12.5'||11) FROM al;
將數字型11隱轉成字元與『12.5』合並,其結果再隱轉數字型與10求和
②調用函數時
SQL> select length(sysdate) from al;
將date型運轉成字元型後計算長度
③向表中插入數據時
create table scott. t1 (id int,name char(10),birth date);
insert into scott.t1 values('123',456,'2017-07-15');
按照欄位的類型進行隱式轉換
3.2.3 顯性類型轉換
即強制完成類型轉換(推薦),有三種形式的數據類型轉換函數:
TO_CHAR
TO_DATE
TO_NUMBER
1)日期-->字元
SQL> select ename,hiredate, to_char(hiredate, 'DD-MON-YY') month_hired from emp
where ename='SCOTT';
ENAME HIREDATE MONTH_HIRED
---------- ------------------- --------------
SCOTT 1987-04-19 00:00:00 19-4月 -87
fm壓縮空格或左邊的'0'
SQL> select ename, hiredate, to_char(hiredate, 'fmyyyy-mm-dd') month_hired from emp
where ename='SCOTT';
ENAME HIREDATE MONTH_HIRED
---------- ------------------- ------------
SCOTT 1987-04-19 00:00:00 1987-4 19
其實DD-MM-YY是比較糟糕的一種格式,因為當日期中天數小於12時,DD-MM-YY和MM-DD-YY容易造成混亂。
以下用法也很常見:
SQL> select to_char(hiredate,'yyyy') FROM emp;
SQL> select to_char(hiredate,'mm') FROM emp;
SQL> select to_char(hiredate,'dd') FROM emp;
SQL> select to_char(hiredate,'DAY') FROM emp;
2)數字-->字元:9表示數字,L本地化貨幣字元
SQL> select ename, to_char(sal, 'L99,999.99') Salary from emp where ename='SCOTT';
ENAME SALARY
---------- --------------------
SCOTT 3,000.00
以下四個語句都是一個結果:
SQL> select to_char(1890.55,'$99,999.99') from al;
SQL> select to_char(1890.55,'$0G000D00') from al;
SQL> select to_char(1890.55,'$99G999D99') from al;
SQL> select to_char(1890.55,'$99G999D00') from al; 9和0可用,其他數字不行
3)字元-->日期
SQL> select to_date('1983-11-12', 'YYYY-MM-DD') tmp_DATE from al;
4)字元-->數字:
SQL> SELECT to_number('$123.45','$9999.99') result FROM al;
使用to_number時如果使用較短的格式掩碼轉換數字,就會返回錯誤。不要混淆to_number和to_char轉換。
SQL> select to_number('123.56','999.9') from al;
報錯:ORA-01722: 無效數字
練習:建立t1表,包括出生日期,以不同的日期描述方法插入數據,顯示小於15歲的都是誰
SQL> create table t1 (id int,name char(10),birth date);
insert into t1 values(1,'tim',sysdate);
insert into t1 values(2,'brian',sysdate-365*20);
insert into t1 values(3,'mike',to_date('1998-05-11','yyyy-mm-dd'));
這一句也可以寫成insert into t1 values(3,'mike',to_date('1998-05-11')),因為'1998-05-11'是和當前日期格式匹配的。
insert into t1 values(4,'nelson',to_date('15-2月-12','dd-mon-rr'));
SQL> select * from t1;
ID NAME BIRTH
---------- ---------- -------------------
1 tim 2016-02-25 17:34:00
2brian 1996-03-01 17:34:22
3 mike 1998-05-11 00:00:00
4 nelson 2012-02-15 00:00:00
SQL> select name||'的年齡是'||to_char(months_between(sysdate,birth)/12,99) age from t1
where months_between(sysdate,birth)/12<15;
AGE
-------------------------
tim 的年齡是 0
nelson 的年齡是 4
the end !!!
@jackman 共築美好!
C. sql中sysdate是什麼類型的
1,sysdate就是系統當前時間,也是date類型的
2,
1
select * from 表名 where to_char(slrq,'yyyy-mm-dd') between '2014-07-01' and '2014-07-23'
1
select * from 表名 where to_char(slrq,'yyyy-mm-dd hh24:mi:ss') between '2014-07-01 00:00:00' and '2014-07-23 23:59:59'
以上兩種寫法第一個只針對日期,第二個針對日期+時間
目測你是用oracle
D. 在SQL-Server中關於日期的數據類型有哪些
有datetime和smalldatetime兩種格式的日期時間數據類型,如下:
1、datetime
資料庫內部用兩個4位元組的整數存儲datetime數據類型的值。
第一個4位元組存儲基礎日期(即1900-1-1, base date)之前或之後的日期。
日期范圍為1753-1-1至9999-12-31。當日期為1900-1-1時值為0,之前的日期是負數;之後日期是正數,另外一個4位元組存儲以午夜後三又三分之一(10/3)毫秒數所代表的每天的時間。
2、smalldatetime
smalldatetime數據類型存儲日期和每天的時間,但精確度低於datetime。
SQL Server將smalldatetime的值存儲為兩個2位元組的整數。
第一個2位元組存儲1900-1-1後的天數,另外一個2位元組存儲午夜後的分鍾數。
日期范圍從1900-1-1到2079-6-6,時間精確到分鍾,29.998秒或更低的smalldatetime值向下舍入為最接近的分鍾,29.999秒或更高的smalldatetime值向上舍入為最接近的分鍾。
--returns time as 12:35
SELECT CAST('2000-05-08 12:35:29.998' AS smalldatetime)
GO
--returns time as 12:36
SELECT CAST('2000-05-08 12:35:29.999' AS smalldatetime)
GO
注意:沒有單獨的日期或時間類型。
E. SQL 中 date 與datetime的區別
區別1:
①date類型可用於需要一個日期值而不需要時間部分時;
②datetime類型:可用於需要同時包含日期和時間信息的值。
區別2:
①date:MySQL 以 'YYYY-MM-DD' 格式檢索與顯示date值;
②datetime:MySQL 以 'YYYY-MM-DD HH:mm:ss'格式檢索與顯示 DATETIME 類型。
(5)sql的時間類型是哪個擴展閱讀:
SQL:
結構化查詢語言是高級的非過程化編程語言,允許用戶在高層數據結構上工作。它不要求用戶指定對數據的存放方法,也不需要用戶了解具體的數據存放方式,所以具有完全不同底層結構的不同資料庫系統, 可以使用相同的結構化查詢語言作為數據輸入與管理的介面。
結構化查詢語言語句可以嵌套,這使它具有極大的靈活性和強大的功能。
1986年10月,美國國家標准協會對SQL進行規范後,以此作為關系式資料庫管理系統的標准語言(ANSI X3. 135-1986),1987年得到國際標准組織的支持下成為國際標准。
不過各種通行的資料庫系統在其實踐過程中都對SQL規范作了某些編改和擴充。
所以,實際上不同資料庫系統之間的SQL不能完全相互通用。
date:
(1)省略 年/月/日 顯示系統日期並提示輸入新的日期,不修改則可直接按回車鍵,要修改則直接輸入新日期。
⑵當機器開始啟動時,有自動處理文件(AUTOEXEC.BAT)被執行,則系統不提示輸入系統日期。否則,提示輸入新日期和時間。
DateTimePicker控制項:
C/S設計中的DateTimePicker控制項[1],有兩種操作模式:
1.下拉式日歷模式(預設)—允許用戶顯示一種能夠用來選擇日期的下拉式日歷。
2.時間格式模式—允許用戶在日期顯示中選擇一個欄位(例如:月、日、年等等),按下控制項右邊的上下箭頭來設置它的值。
可以自定義控制項的下拉式日歷的外觀。
使用各種顏色屬性,例如CalendarBackColor,CalendarForeColor,CalendarTitleBackColor,CalendarTitleForeColor和CalendarTrailingForeColor,允許創建屬於您自己的顏色方案。
可以使用鍵盤或滑鼠對控制項進行瀏覽。下拉式日歷有兩個按鈕使您能夠滾動月份數據出入視圖。
F. 在SQL中新建表中的出生時間用哪種數據類型
規定使用date類型。
1.單擊桌面上的「ManagementStudio」圖標。
G. ASP+SQL的時間數據類型
int
3
adInteger整型
int 數據類型可以存儲從- 231(-2147483648)到231 (2147483 647)之間的整數。存儲到資料庫的幾乎所有數值型的數據都可以用這種數據類型。這種數據類型在資料庫里佔用4個位元組
bigint2
20
adBigInt
binary3
128
adBinary二進制數據類型
binary數據類型用來存儲可達8000 位元組長的定長的二進制數據。當輸入表的內容接近相同的長度時,你應該使用這種數據類型
bit4
11
adBoolean
bit 數據類型是整型,其值只能是0、1或空值。這種數據類型用於存儲只有兩種可能值的數據,如Yes 或No、True 或Fa lse 、On 或Off
char5
129
adChar字元型
char數據類型用來存儲指定長度的定長非統一編碼型的數據。當定義一列為此類型時,你必須指定列長。當你總能知道要存儲的數據的長度時,此數據類型很有用。例如,當你按郵政編碼加4個字元格式來存儲數據時,你知道總要用到10個字元。此數據類型的列寬最大為8000 個字元
datetime6
135
adDBTimeStamp日期時間型
datetime數據類型用來表示日期和時間。這種數據類型存儲從1753年1月1日到9999年12月3 1日間所有的日期和時間數據, 精確到三百分之一秒或3.33毫秒
decimal7
131
adNumeric精確數值型
decimal 數據類型能用來存儲從-1038-1到1038-1的固定精度和范圍的數值型數據。使用這種數據類型時,必須指定范圍和精度。 范圍是小數點左右所能存儲的數字的總位數。精度是小數點右邊存儲的數字的位數
float8
5
adDouble近似數值型
float 數據類型是一種近似數值類型,供浮點數使用。說浮點數是近似的,是因為在其范圍內不絕仿是所有的數都能精確表示。浮點數可以是從-1.79E+308到1.79E+308 之間的任意數
image9
205
adLongVarBinary二進制數據類型
image 數據類型用來存儲變長的搭宏絕二進制數據,最大可達231-1或大約20億位元組
money10
6
adCurrency貨幣型
money 數據類型用來表示錢和貨幣值。這種數據類型能存儲從-9220億到9220 億之間的數據,精確到貨幣單位的萬分之一
nchar11
130
adWChar統一編碼字元型
nchar 數據類型用來存儲定長統一編碼字元型數據。統一編碼用雙位元組結構來存儲每個字元,而不是用單位元組(普通文本中的情況)。它允許大量的擴展字元。此數據類型能存儲4000種字元,使用的位元組空間上增加了一倍
ntext12
203
adLongVarWChar統一編碼字元型
ntext 數據類型用來存儲大量的統一編碼字元型數據。這種數據類型能存儲230 -1或將近10億個字元,且使用的位元組空間增加了一倍
numeric13
131
adNumeric精確數值型
numeric數據類型與decimal 型相同
nvarchar14
202
adVarWChar統一編碼字元型
nvarchar 數據類型用作變長的統一編碼字元型數據。此數據類型能存儲4000種字元,使用的位元組空間增加了一倍
real15
4
adSingle近似數值型
real 數據類型像浮點數一樣,是近似數值類型。它可以表示數值在-3.40E+38到3.40E+38之間的浮點數
smalldatetime16
135
adDBTimeStamp日期時間型
smalldatetime 數據類型用來表示從1900年1月1日到2079年6月6日間的日期和知姿時間,精確到一分鍾
smallint17
2
adSmallInt整型
smallint 數據類型可以存儲從- 215(-32768)到215(32767)之間的整數。這種數據類型對存儲一些常限定在特定范圍內的數值型數據非常有用。這種數據類型在資料庫里佔用2 位元組空間
smallmoney18
6
adCurrency貨幣型
smallmoney 數據類型用來表示錢和貨幣值。這種數據類型能存儲從-214748.3648 到214748.3647 之間的數據,精確到貨幣單位的萬分之一
sql_variant19
204
adVarBinary
text20
201
adLongVarChar字元型
text 數據類型用來存儲大量的非統一編碼型字元數據。這種數據類型最多可以有231-1或20億個字元
timestamp21
128
adBinary特殊數據型
timestamp 數據類型是一種特殊的數據類型,用來創建一個資料庫范圍內的唯一數碼。 一個表中只能有一個timestamp列。每次插入或修改一行時,timestamp列的值都會改變。盡管它的名字中有「time」, 但timestamp列不是人們可識別的日期。在一個資料庫里,timestamp值是唯一的
tinyint22
17
adUnsignedTinyInt整型
tinyint 數據類型能存儲從0到255 之間的整數。它在你只打算存儲有限數目的數值時很有用。 這種數據類型在資料庫中佔用1 個位元組
uniqueidentifier23
72
adGUID特殊數據型
Uniqueidentifier數據類型用來存儲一個全局唯一標識符,即GUID。GUID確實是全局唯一的。這個數幾乎沒有機會在另一個系統中被重建。可以使用NEWID 函數或轉換一個字元串為唯一標識符來初始化具有唯一標識符的列
varbinary24
204
adVarBinary二進制數據類型
varbinary 數據類型用來存儲可達8000 位元組長的變長的二進制數據。當輸入表的內容大小可變時,你應該使用這種數據類型
varchar25
200
adVarChar字元型
varchar數據類型,同char類型一樣,用來存儲非統一編碼型字元數據。與char 型不一樣,此數據類型為變長。當定義一列為該數據類型時,你要指定該列的最大長度。 它與char數據類型最大的區別是,存儲的長度不是列長,而是數據的長度
H. SQL中哪個欄位類別記錄日期和哪個欄位類別記錄時間
SQL中哪個欄位類別記錄日期和哪個欄位類別記錄時間
設計為字元串類型就行.
sql語句在其他語言中只是嵌入使用,裡面的類型與編程語言無關.
I. sql資料庫中的時間類型
滿意答案。9級2010-11-29使用nvarchar對於前期的實現比較容易,但性能及後期使用及後期需求開發比較困難
如按時間排序,資料庫類型校驗,根據時間段查詢,根據時間的分組統計等等方面造成的影響比較大
追問:
如果用datetime
我的MyEclipse用Hibernate轉換時是timestamp類型的
在用模糊查詢查時間時有點糾結啊
老是報不能轉換的錯誤
回答:
用hibernate啊
那你在配置文件注入類型不用時間戳
改成這個試試java.util.Date
補充:
hibernate項目好幾年沒做過了
原來在資料庫時間建模和操縱時習慣用java.sql.Timestamp與資料庫中DateTime對應,但業務流通層,模型里還是用java.util.Date
因為這些時間直接的轉換都是一樣的方便,而且這樣做邏輯理解上比較直觀
記憶中是沒有出現過錯誤,Timestamp在現在使用數據源時經常使用
追問:
知道用date類型的哇
但是hibernate自動生成的就是timestamp類型
不改配置文件
就用timestamp怎麼做啊?總不能每次生成就改一次配置文件吧.....
追問:
還有我做的是模糊查詢
在form裡面時間又是string類型的
轉換有點麻煩
回答:
你在createSQLQuery方法後面在使用
addScalar方法傳入你datetime的實體對應名和hibernate類型試一下吧
補充:
這個的確比較麻煩,你可以寫個公共轉換方法進行轉換
就是字元串根據你的時間格式進行取出時間long
然後轉換就可以了
大概這樣子
SimpleDateFormat
simpleDateFormat
=
new
SimpleDateFormat();