1. sql 時間日期比較 問題~大俠們幫幫忙吧~
時間段比較,不用轉換成字元型。
應該都轉換成同一種時間來比較,也就是把兩邊的日期都再次用同一個函數轉換一下,再比較試試看,sql裡面日期是有好幾種不同格式的。
2. sql的表中有一列是時間,格式是2011-12-01 12:21:23是字元串形式的,怎麼按照這種格式排序啊
可以轉成日期排序
order by convert(datetime, 字元串日期欄位, 120) asc(或者desc)
但是,要求你的欄位一定要符合你所說的這樣的格式,否則轉日期會有錯誤。
3. SQL查詢時間格式問題
SQL的時間格式是:YYYY-MM-DD HH:NN:SS.sss
其sss是毫秒,由於計算機內部時鍾晶振的問題,SQL時間最小單位為3毫秒。
一般SQL時間格式處理:大都採取轉換格式至datetime格式
例如顯示時常用到的:
1、將2015轉換為當年的第一天:
selectcast('2015'+'-1-1'asdatetime)
輸出結果為:2015-01-01 00:00:00.000
2、將2015-02轉換為當年的第一天:
selectcast('2015-02'+'-1'asdatetime)
輸出結果為:2015-02-01 00:00:00.000
其實以上可以總結為將具有一定格式的字元串轉換為日期類型,只要將年月日補全,後面的時間會默認為0時0分0秒0毫秒
4. 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();
5. 使用SQL語句向表中插入字元型和日期型數據應注意什麼問題
插入時可以直接用字元串格式就可以了
如insert into table1(date1) values('2012/12/13');
或
insert into table1(date1) select '2012/12/13';
6. SQL日期類型和字元串類型哪個檢索快
這個取決於將來,數據量大了以後,你怎麼建立索引的問題。
因為 一旦用了函數什麼的, 索引就用不上了, 就要做 基於函數的索引了。
至於 想按月和按天查詢。
其實很簡單, 就是 MONTH( CreateTime ) = 查詢的月 AND DAY ( CreateTime ) = 查詢的天
不必去 Convert.
7. Sql字元串與時間比較問題
oracle比較字元串是根據ascii碼來的,第一個字母的ascii大小比較如果相等再比較下一個,類推。
字元串和數字進行操作是會報異常的,因為類型不一樣不能進行比較。
oracle在執行sql的時候有些時候會自動轉換,比如:
select
*
from
chan_customer
cc
where
cc.customer_id
=
'1';
即使customer_id是數字型的也可以查出來,但是oracle有區分字元和數字
就是通過加不加單引號來區分。
8. sql語句的問題
select
top
10
*
from
A
order
by
id
desc
得到最後十條紀錄
至於第二個問題首先得知道你添加日期字元串時是用什麼格式的,另外字元串是可以比較的,
select
*
from
A
where
記錄日期between
'20100101'
and
'20100108'
9. sql中格式化字元串或時間,遇到多少,寫多少,持
--求開始時間和結束時間相差的天數
DECLARE @result int
DECLARE @StartDayStartTime DATETIME
DECLARE @EndDayEndTime DATETIME
set @result=DATEDIFF (d,CONVERT(Datetime,@StartDay),CONVERT(Datetime,@EndDay))
--將2012-07-12 15:56:53 格式化為20120712 ,這種需求大多是因為每日數據量更新過大,所以為每天創建一張表,在實現跨多天查詢的時候,你懂得。
--執行sql,並返回,最後求和,@sql務必要聲明為nvarchar類型
declare @sql nvarchar(500)
declare @sm decimal(18,2) --開始里程
declare @em decimal(18,2)--結束里程
declare @sum decimal(18,2)--當天時間段內的里程
declare @temp decimal(18,2)--里程變數
set @sql='SELECT top 1 @temp=Convert(decimal(18,2),'+@GpsPath+'.Mileage) FROM '+@GpsPath+' WHERE GpsTime<='''+CONVERT(varchar(100),@E, 21)+''' AND TerminalNo=''02200051'' and '+@GpsPath+'.Mileage>0 ORDER BY GpsTime desc'
exec sp_executesql @sql,N'@temp decimal(18,2) output',@em out print @em
set @sql='SELECT top 1 @temp=Convert(decimal(18,2),'+@GpsPath+'.Mileage) FROM '+@GpsPath+' WHERE GpsTime>='''+CONVERT(varchar(100),@S, 21)+''' AND TerminalNo=''02200051'' and '+@GpsPath+'.Mileage>0 ORDER BY GpsTime asc'
exec sp_executesql @sql,N'@temp decimal(18,2) output',@sm out print @sm
set @sum=Convert(decimal(18,2),@em)-Convert(decimal(18,2),@sm)
10. 為什麼很多項目資料庫日期都存為字元串格式DATE不是更好嗎
字元串格式方便操作,對日期進行顯示、修改,並且可以進行統一化的管理,用DATE也行,但靈活性不強,所以很多項目資料庫日期都存為字元串格式。望採納。