sql的todate
A. 求sql 函數TO DATE的用法
TO_DATE,就是轉換數據類型,轉換成DATE的數據類型,然後存在表中吧。
如果是VARCHAR類型的話,讀取的時候只能按字元串讀取。不能按日期數據讀取。
B. SQL語句中什麼時候應該用betweento date,什麼時候應該用to_date
select * from table where rq between to_date('2009-09-01','yyyy-mm-dd') and to_date('2009-09-08','yyyy-mm-dd')
以上,希望對你有所幫助!
C. sql select TRdate日期列 from table1 這個搜索出來的結果 是 YY-MM-DD hhmmss
Select Convert(varchar(30),TRdate,111) date1 from table1
解釋如下
Convert(varchar(30),TRdate,111) ,
第一個char型類型,第二個參數時間列名,111是時間格式編號。
你想要哪種格式都可在下表找到對應的編號就行
Style(4位表示年份) 輸入輸出格式
100 mon dd yyyy hh:miAM(或PM)
101 mm/dd/yy
102 yymmdd
103 dd/mm/yy
104 ddmmyy
105 ddmmyy
106 dd mon yy
107 mon dd,yy
108 hh:mm:ss
109 mon dd yyyy hh:mi:ss:mmmmAM(或PM)
110 mmddyy
111 yy/mm/dd
112 yymmdd
113 dd mon yyyy hh:mi:ss:mmm(24小時制)
114 hh:mi:ss:mmm(24小時制)
120 yyyymmdd hh:mi:ss(24小時制)
121 yyyymmdd hh:mi:ss:mmm(24小時制)
D. sql關於to_date的區別
區別:
前者是 年月日格式:to_char(time,'yyyy-mm-dd')
後者是 年月日 時分秒 to_date('2012-05-11 23:59:59','yyyy-mm-dd hh24:mi:ss')
組成:
在正式學習SQL語言之前,首先讓我們對SQL語言有一個基本認識,介紹一下SQL語言的組成:
1.一個SQL資料庫是表(Table)的集合,它由一個或多個SQL模式定義。
2.一個SQL表由行集構成,一行是列的序列(集合),每列與行對應一個數據項。
3.一個表或者是一個基本表或者是一個視圖。基本表是實際存儲在資料庫的表,而視圖是由若干基本表或其他視圖構成的表的定義。
4.一個基本表可以跨一個或多個存儲文件,一個存儲文件也可存放一個或多個基本表。每個存儲文件與外部存儲上一個物理文件對應。
5.用戶可以用SQL語句對視圖和基本表進行查詢等操作。在用戶角度來看,視圖和基本表是一樣的,沒有區別,都是關系(表格)。
6.SQL用戶可以是應用程序,也可以是終端用戶。SQL語句可嵌入在宿主語言的程序中使用,宿主語言有FORTRAN,COBOL,PASCAL,PL/I,C和Ada語言等。SQL用戶也能作為獨立的用戶介面,供交互環境下的終端用戶使用。
以上內容參考網路-SQL資料庫
E. ORACEL sql語句 兩時間欄位求差
兩個Date類型欄位:START_DATE,END_DATE,計算這兩個日期的時間差(分別以天,小時,分鍾,秒,毫秒):
天:
ROUND(TO_NUMBER(END_DATE - START_DATE))
小時:
ROUND(TO_NUMBER(END_DATE - START_DATE) * 24)
分鍾:
ROUND(TO_NUMBER(END_DATE - START_DATE) * 24 * 60)
秒:
ROUND(TO_NUMBER(END_DATE - START_DATE) * 24 * 60 * 60)
毫秒:
ROUND(TO_NUMBER(END_DATE - START_DATE) * 24 * 60 * 60 * 1000)
Oracle計算時間差函數 2008-08-20 10:00 兩個Date類型欄位:START_DATE,END_DATE,計算這兩個日期的時間差(分別以天,小時,分鍾,秒,毫秒): 天: ROUND(TO_NUMBER(END_DATE - START_DATE)) 小時: ROUND(TO_NUMBER(END_DATE - START_DATE) * 24) 分鍾: ROUND(TO_NUMBER(END_DATE - START_DATE) * 24 * 60) 秒: ROUND(TO_NUMBER(END_DATE - START_DATE) * 24 * 60 * 60) 毫秒: ROUND(TO_NUMBER(END_DATE - START_DATE) * 24 * 60 * 60 * 1000)
外加to_date與to_char函數:
ORACLE中:
select to_date('2007-06-28 19:51:20','yyyy-MM-dd HH24:mi:ss') from al;
一般SQL中:
select to_date('2007-06-28 19:51:20','yyyy-MM-dd HH:mm:ss') from al;
區別:
1、HH修改為HH24。
2、分鍾的mm修改為mi。
24 小時的形式顯示出來要用 HH24
select to_char(sysdate,'yyyy-MM-dd HH24:mi:ss') from al;
select to_date('2005-01-01 13:14:20','yyyy-MM-dd HH24:mi:ss') from al;
to_date() function
1. 日期格式參數 含義說明
D 一周中的星期幾
DAY 天的名字,使用空格填充到 9 個字元
DD 月中的第幾天
DDD 年中的第幾天
DY 天的簡寫名
IW ISO 標準的年中的第幾周
IYYY ISO 標準的四位年份
YYYY 四位年份
YYY,YY,Y 年份的最後三位,兩位,一位
HH 小時,按 12 小時計
HH24 小時,按 24 小時計
MI 分
SS 秒
MM 月
Mon 月份的簡寫
Month 月份的全名
W 該月的第幾個星期
WW 年中的第幾個星期 1. 日期時間間隔操作
當前時間減去 7 分鍾的時間
select sysdate,sysdate - interval '7' MINUTE from al
當前時間減去 7 小時的時間
select sysdate - interval '7' hour from al
當前時間減去 7 天的時間
select sysdate - interval '7' day from al
當前時間減去 7 月的時間
select sysdate,sysdate - interval '7' month from al
當前時間減去 7 年的時間
select sysdate,sysdate - interval '7' year from al
時間間隔乘以一個數字
select sysdate,sysdate - 8 *interval '2' hour from al
2. 日期到字元操作
select sysdate,to_char(sysdate,'yyyy-mm-dd hh24:mi:ss') from al
select sysdate,to_char(sysdate,'yyyy-mm-dd hh:mi:ss') from al
select sysdate,to_char(sysdate,'yyyy-ddd hh:mi:ss') from al
select sysdate,to_char(sysdate,'yyyy-mm iw-d hh:mi:ss') from al
參考 oracle 的相關關文檔 (ORACLE901DOC/SERVER.901/A90125/SQL_ELEMENTS4.HTM#48515)
3. 字元到日期操作
select to_date('2003-10-17 21:15:37','yyyy-mm-dd hh24:mi:ss') from al
具體用法和上面的 to_char 差不多。
4.TO_NUMBER
使用TO_NUMBER函數將字元轉換為數字
TO_NUMBER(char[, '格式'])
數字格式格式
9 代表一個數字
0 強制顯示0
$ 放置一個$符
L 放置一個浮動本地貨幣符
. 顯示小數點
, 顯示千位指示符
oracle中的to_date參數含義
1.日期格式參數含義說明
D 一周中的星期幾
DAY 天的名字,使用空格填充到9個字元
DD 月中的第幾天
DDD 年中的第幾天
DY 天的簡寫名
IW ISO標準的年中的第幾周
IYYY ISO標準的四位年份
YYYY 四位年份
YYY,YY,Y 年份的最後三位,兩位,一位
HH 小時,按12小時計
HH24 小時,按24小時計
MI 分
SS 秒
MM 月
Mon 月份的簡寫
Month 月份的全名
W 該月的第幾個星期
WW 年中的第幾個星期 1.日期時間間隔操作
當前時間減去7分鍾的時間
select sysdate,sysdate - interval 』7』 MINUTE from al
當前時間減去7小時的時間
select sysdate - interval 』7』 hour from al
當前時間減去7天的時間
select sysdate - interval 』7』 day from al
當前時間減去7月的時間
select sysdate,sysdate - interval 』7』 month from al
當前時間減去7年的時間
select sysdate,sysdate - interval 』7』 year from al
時間間隔乘以一個數字
select sysdate,sysdate - 8 *interval 』2』 hour from al
2.日期到字元操作
select sysdate,to_char(sysdate,』yyyy-mm-dd hh24:mi:ss』) from al
select sysdate,to_char(sysdate,』yyyy-mm-dd hh:mi:ss』) from al
select sysdate,to_char(sysdate,』yyyy-ddd hh:mi:ss』) from al
select sysdate,to_char(sysdate,』yyyy-mm iw-d hh:mi:ss』) from al
參考oracle的相關關文檔(ORACLE901DOC/SERVER.901/A90125/SQL_ELEMENTS4.HTM#48515)
3. 字元到日期操作
select to_date(』2003-10-17 21:15:37』,』yyyy-mm-dd hh24:mi:ss』) from al
具體用法和上面的to_char差不多。
4. trunk/ ROUND函數的使用
select trunc(sysdate ,』YEAR』) from al
select trunc(sysdate ) from al
select to_char(trunc(sysdate ,』YYYY』),』YYYY』) from al
5.oracle有毫秒級的數據類型
--返回當前時間 年月日小時分秒毫秒
select to_char(current_timestamp(5),』DD-MON-YYYY HH24:MI:SSxFF』) from al;
--返回當前時間的秒毫秒,可以指定秒後面的精度(最大=9)
select to_char(current_timestamp(9),』MI:SSxFF』) from al;
6.計算程序運行的時間(ms)
declare
type rc is ref cursor;
l_rc rc;
l_mmy all_objects.object_name%type;
l_start number default dbms_utility.get_time;
begin
for I in 1 .. 1000 loop
open l_rc for 'select object_name from all_objects '|| 'where object_id = ' || i;
fetch l_rc into l_mmy;
close l_rc;
end loop;
dbms_output.put_line ( round( (dbms_utility.get_time-l_start)/100, 2 ) ||' seconds ...' );
end;
F. sql查詢 取當前系統時間為 to_date(sysdate,'yyyymmdd') 如何去兩年前的當天該如何查詢
select add_months(sysdate, -24) from al, 如果只要顯示年月日的話,則可以這樣:
select trunc(add_months(sysdate, -24,'DD') from al
G. SQL根據條件查詢某一個月與上一個月的對比
為了方便轉換,先寫個轉換自定義函數:(將年,月轉換成日期)
create function Todate(@year smallint,@month tinyint)
returns datetime
as
begin
declare @date datetime
select @date=cast(
cast(@year as varchar(4))+『-'+cast(@month as varchar(2)+'-1'
as datetime)
return(@date)
end
查詢代碼:
select
a.name ,a. year,a. month a.money,
case when a.money-b.money >0 then a.money-b.money else -1*(a.money-b.money ) end
as 下月對比
case when a.money-b.money >0 then '減少' else '增加' end as 得到下月結果
case when a.money-c.money >0 then a.money-b.money else -1*(a.money-c.money ) end
as 上月對比
case when a.money-c.money >0 then '增加' else '減少' end as 得到上月結果
from 工資表 a left join
(select name,dateadd(mm,-1, dbo.Todate(year,month)) as 下月,money from 工資表)b
on a.name=b.name and a.year=year(b.下月) and a.month=b.month(b.下月)
left join
(select name,dateadd(mm,1, dbo.Todate(year,month)) as 上月,money from 工資表)c
on a.name=b.name and a.year=year(c.上月) and a.month=b.month(c.上月)
H. SQL統計問題,怎麼樣實現按天查詢出沒有的記錄條數。高手回答一下。
sqlserver寫法
其他資料庫的話,語法得改,欄位類型不一致的話也得改
創建表
createtabletest
(姓名varchar(10),
時間varchar(10))
insertintotestvalues('張三','2014-1-2')
insertintotestvalues('張三','2014-1-6')
insertintotestvalues('李四','2014-1-2')
執行
selects1.*
from
(selectt2.姓名,t1.rq
from
(selectconvert(varchar(10),rq,120)rq
from
(selectcast('2014-1-2'asdatetime)+numberrqfrommaster..spt_valueswheretype='p')t
wheret.rqbetween'2014-1-2'and'2014-1-6')t1,
(selectdistinct姓名fromtest)t2)s1
wherenotexists(select1fromtests2wheres1.姓名=s2.姓名ands1.rq=convert(varchar(10),cast(s2.時間asdatetime),120))
結果
selects1.*
from
(selectt2.姓名,t1.rq
from
(selectconvert(varchar(10),rq,120)rq
from
(selectcast('2014-1-2'asdatetime)+numberrqfrommaster..spt_valueswheretype='p')t
wheret.rqbetween'2014-1-2'and'2014-1-6')t1,
(select姓名from人員表)t2)s1
wherenotexists(select1fromtests2wheres1.姓名=s2.姓名ands1.rq=convert(varchar(10),cast(s2.時間asdatetime),120))
orderbys1.姓名,s1.rq
我新建了一個人員表,里邊就一列,叫「姓名」
I. sql如何提取最新的時間記錄
你要取最新的時間記錄 只要取得最大的時間就行了 max(時間欄位)
如果用oracle 就得轉化一下時間 todate().
J. 關於sql語句的to_date的用法問題
oracle嗎?
你在java中把日期轉換成 yyyy-mm-dd hh:mm:ss的格式後再 處理:
比如:
updatet_contentsettitle='zxcv',publishtime=to_date('2010-10-0120:00:00','yyyy-mm-ddhh24:mi:ss')whereid=1