date數據存入mysql_Date對象存入mysql數據庫

java.sql.Date,java.sql.Time和java.sql.Timestamp三個都是java.util.Date的子類(包裝類)。

java.sql.Date是java.util.Date的子類,是一個包裝了毫秒值的瘦包裝器,允許 JDBC 將毫秒值標識為 SQL DATE 值。毫秒值表示自 1970 年 1 月 1 日 00:00:00 GMT 以來經過的毫秒數。 為了與 SQL DATE 的定義一致,由 java.sql.Date 實例包裝的毫秒值必須通過將時間、分鐘、秒和毫秒設置為與該實例相關的特定時區中的零來“規范化”。

說白了,java.sql.Date就是與數據庫Date相對應的一個類型,而java.util.Date是純java的Date。

從類 java.util.Date 繼承的方法

after, before, clone, compareTo, equals, getDate, getDay, getMonth, getTime, getTimezoneOffset, getYear, hashCode, parse, setDate, setMonth, setYear, toGMTString, toLocaleString, UTC

sql.Date也有時間的

如果不想用oracle的to_date函數,可以自己生成sql.Date對象

String s = "2012-06-21 00:10:00";

SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");

java.util.Date d1 = sdf.parse(s); //先把字符串轉為util.Date對象

java.sql.Date d2 = new java.sql.Date(d1.getTime()); //再轉換為sql.Date對象

想要將帶時分秒的時間插入到數據庫中,除了Oracle數據庫的to_date()方法之外。我們可以用 Timestamp類來實現。java.sql.Date是規范化之后的時間,其時分秒部分被截取掉了。

java.sql.Date是為了配合SQL DATE而設置的數據類型。“規范化”的java.sql.Date只包含年月日信息,時分秒毫秒都會清零。格式類似:YYYY-MM-DD。當我們調用ResultSet的getDate()方法來獲得返回值時,java程序會參照"規范"的java.sql.Date來格式化數據庫中的數值。因此,如果數據庫中存在的非規范化部分的信息將會被劫取。

在sun提供的ResultSet.java中這樣對getDate進行注釋的:

Retrieves the of the designated column in the current row of this ResultSet object as a “java.sql.Date” object in the Java programming language.

同理。如果我們把一個java.sql.Date值通過PrepareStatement的setDate方法存入數據庫時,java程序會對傳入的java.sql.Date規范化,非規范化的部分將會被劫取。然而,我們java.sql.Date一般由java.util.Date轉換過來,如:java.sql.Date sqlDate=new java.sql.Date(new java.util.Date().getTime()).

顯然,這樣轉換過來的java.sql.Date往往不是一個規范的java.sql.Date.要保存java.util.Date的精確值,

我們需要利用java.sql.Timestamp.

eg:

??String?s="2012-01-02?03:12:21";

SimpleDateFormat?sp?=?newSimpleDateFormat("yyyy-MM-dd?hh:mm:ss");

java.util.Date?du?=?sp.parse(s);

java.sql.Timestamp?st?=?newjava.sql.Timestamp(du.getTime());

把一個日期值寫入數據庫中,發現由java.util.Date轉存為java.sql.Date后,只有年月日,沒有了時分秒:

java.util.Date?ud?=newjava.util.Date();

java.sql.Date?sd?=newjava.sql.Date(ud.getTime());

這個可是不行的,用戶至少要精確到分。由于java.sql.Date為了能夠遵守sql日期標準,把所有時分秒都歸了零。只有用Timestamp來進行保存,由于Timestamp是子類,因此寫好的bean里面不需要修改數據類型。

pstmt.setTimestamp(15,newjava.sql.Timestamp(Calendar.getInstance().getTime().getTime()));//當前時間

pstmt.setTimestamp(16,newjava.sql.Timestamp(userFile.getCreateTime().getTime()));//指定時間

對于指定時間還可以用Calendar類的setTime()方法來設置

Calendar?cal?=?Calendar.getInstance();

System.out.println(cal.getTime().getTime());

String?string="2012-01-01?01:02:03";

SimpleDateFormat?sp?=?newSimpleDateFormat("yyyy-MM-dd?hh:mm:ss");

java.util.Date?da?=?sp.parse(string);

cal.setTime(da);

System.out.println(cal.getTime().getTime());

在數據庫中插入帶時分秒的時間需要用Timestamp。一般做這種操作用框架居多,我就說一下Hibernate吧。在數據庫表中字段類型設置為Date數據類型,代碼中映射的字段類型設置為 Timestamp類型,?private Timestamp date;? 在映射文件中 Type也是時間戳類型的。在賦值取值的時候用前面的操作獲取到需要的時間的時間戳對象直接賦值就行。然后就可以用Hibernate執行方法將帶時分秒的時間存入到數據庫里了。(不過這一點意義好像不是很大,大多都是直接varchar2存進去,取時候再to_date一下或者在代碼里處理)

還需要說一點的就是

在使用SimpleDateFormat時格式化時間的 yyyy.MM.dd 為年月日而如果希望格式化時間為12小時制的,則使用hh:mm:ss如果希望格式化時間為24小時制的,則使用HH:mm:ss,上代碼:

SimpleDateFormat?ss?=newSimpleDateFormat("yyyy-MM-dd?hh:mm:ss");//12小時制

SimpleDateFormat?sdformat?=newSimpleDateFormat("yyyy-MM-dd?HH:mm:ss");//24小時制

Date?d?=newDate();

SimpleDateFormat?ss?=?newSimpleDateFormat("yyyy-MM-dd?hh:mm:ss");//12小時制

System.out.println(ss.format(d));

Date?date?=?newDate();

SimpleDateFormat?sdformat?=?newSimpleDateFormat("yyyy-MM-dd?HH:mm:ss");//24小時制

String?LgTime?=?sdformat.format(date);

System.out.println(LgTime);

結果為

2008-05-2801:32:54

2008-05-2813:32:54

Date類,已經很少用了。更多使用的是Calendar

Calendar??? date??? =??? Calendar.getInstance();

date.get(Calendar.HOUR_OF_DAY??? );//得到24小時機制的

date.get(Calendar.HOUR);//??? 得到12小時機制的

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/388832.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/388832.shtml
英文地址,請注明出處:http://en.pswp.cn/news/388832.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

盛嚴謹,嚴謹,再嚴謹。_評估員工調查的統計嚴謹性

盛嚴謹,嚴謹,再嚴謹。The human resources industry relies heavily on a wide range of assessments to support its functions. In fact, to ensure unbiased and fair hiring practices the US department of labor maintains a set of guidelines (Uniform Guidelines) to …

復權就是對股價和成交量進行權息修

* 所謂復權就是對股價和成交量進行權息修復,按照股票的實際漲跌繪制股價走勢圖, * 并把成交量調整為相同的股本口徑。股票除權、除息之后,股價隨之產生了變化, * 但實際成本并沒有變化。 * 如:原來20元的股票,十送十之…

前端校驗和后端校驗

問:到底是前端校驗好還是后端校驗好呢? 答:后端校驗比前端校驗更安全,更可靠,前端校驗可以增加用戶體驗,一般來說,在前端校驗的東西在后端也必須校驗(比如登陸用戶名、密碼&#xff…

[MySQL] INFORMATION_SCHEMA 數據庫包含所有表的字段

sql注入后可以通過該數據庫獲取所有表的字段信息1. COLLATIONS表 提供有關每個字符集的排序規則的信息。 COLLATIONS表包含以下列:COLLATION_NAME 排序規則名稱。 CHARACTER_SET_NAME 與排序規則關聯的字符集的名稱。 ID 排序規則ID。 IS_DEFAULT 排序規則是否為其字…

開根號的筆算算法圖解_一個數的開根號怎么計算

一個數的開根號怎么計算2020-11-08 15:46:47文/鐘詩賀帶根號的式子可以直接進行開平方的運算。一些特殊的根號運算有;√2≈1.414、1/2-√3≈0.5-1.732≈-1.232、2√5≈22.236≈4.236、√7-√6≈2.646-2.449≈0.197。開平方的筆算方法1.將被開方數的整數部分從個位起…

arima 預測模型_預測未來:學習使用Arima模型進行預測

arima 預測模型XTS對象 (XTS Objects) If you’re not using XTS objects to perform your forecasting in R, then you are likely missing out! The major benefits that we’ll explore throughout are that these objects are a lot easier to work with when it comes to …

net程序員的iPhone開發-MonoTouch

net程序員的iPhone開發-MonoTouch iPhone軟件的Native開發除了使用Apple推薦的Objective-C Cocoa之外,也有其他的一些工具和SDK提供 基于WEB的形式的一些框架在下面這個文章介紹過 各種SmartPhone上的跨平臺開源框架的總結 http://www.cnblogs.com/2018/archive/20…

ASP防止SQL注入

防止SQL注入http://0.0.0.0/bzhs/login.asp?logTypeedit;WAITFOR DELAY 0:0:5 --logType Replace(Replace(Replace(Replace(logType,"-",""),"",""),"&",""),";","")fcdm Replace(Rep…

protobuf java 生成_protobuf代碼生成

windows :1,兩個文件:proto.exe, protobuf-java-2.4.1.jar2,建立一個工程TestPb,在下面建立一個proto文件件,用來存放【。proto】文件3,將proto,exe放在工程下,4,建立一個msg.proto文件:option …

bigquery_在BigQuery中鏈接多個SQL查詢

bigqueryBigquery is a fantastic tool! It lets you do really powerful analytics works all using SQL like syntax.Bigquery是一個很棒的工具! 它使您能夠使用像語法一樣SQL來進行真正強大的分析工作。 But it lacks chaining the SQL queries. We cannot run …

允許指定IP訪問遠程桌面

允許指定IP訪問遠程桌面 電腦軟件 2010-01-23 02:33:40 閱讀595 評論0 字號:大 中 小 訂閱 一、新建IP安全策略 WINR打開運行對話框,輸入gpedit.msc進入組策略編輯器。 依次打開“本地計算機”策略--計算機配置--Windows設置--安全設置--IP安…

大理石在哪兒 (Where is the Marble?,UVa 10474)

題目描述&#xff1a;算法競賽入門經典例題5-1 1 #include <iostream>2 #include <algorithm>3 using namespace std;4 int maxn 10000 ;5 int main()6 {7 int n,q,a[maxn] ,k0;8 while(scanf("%d%d",&n,&q)2 && n &&q…

Volley 源碼解析之網絡請求

Volley源碼分析三部曲Volley 源碼解析之網絡請求Volley 源碼解析之圖片請求Volley 源碼解析之緩存機制 Volley 是 Google 推出的一款網絡通信框架&#xff0c;非常適合數據量小、通信頻繁的網絡請求&#xff0c;支持并發、緩存和容易擴展、調試等&#xff1b;不過不太適合下載大…

為什么修改了ie級別里的activex控件為啟用后,還是無法下載,顯示還是ie級別設置太高?

如果下載插件時下載不了&#xff0c;這樣設置&#xff0c;打開IE選工具/Internet 選項/安全/自定義級別/設置中的ActiveX控件自動提示“禁用”。 對標記為可安全執行腳本ActiveX控件執行腳本“啟用” 對沒有標記為安全的ActiveX初始化和腳本運行“啟用”&#xff08;下載插件后…

mysql 遷移到tidb_通過從MySQL遷移到TiDB來水平擴展Hive Metastore數據庫

mysql 遷移到tidbIndustry: Knowledge Sharing行業&#xff1a;知識共享 Author: Mengyu Hu (Platform Engineer at Zhihu)作者&#xff1a;胡夢瑜(Zhhu的平臺工程師) Zhihu which means “Do you know?” in classical Chinese, is the Quora of China: a question-and-ans…

兩個日期相差月份 java_Java獲取兩個指定日期之間的所有月份

String y1 "2016-02";//開始時間String y2 "2019-12";//結束時間try{Date startDate new SimpleDateFormat("yyyy-MM").parse(y1);Date endDate new SimpleDateFormat("yyyy-MM").parse(y2);Calendar calendarCalendar.getInstance(…

js前端日期格式化處理

js前端日期格式化處理 1.項目中時間返回值&#xff0c;很過時候為毫秒值&#xff0c;我們需要轉換成 能夠看懂的時間的格式&#xff1b; 例如&#xff1a; ? yyyy-MM-dd HH:mm:ss 2.處理方法&#xff08;處理方法有多種&#xff0c;可以傳值到前端處理&#xff0c;也可以后臺可…

如何用sysbench做好IO性能測試

sysbench 是一個非常經典的綜合性能測試工具&#xff0c;通常都用它來做數據庫的性能壓測&#xff0c;但也可以用來做CPU&#xff0c;IO的性能測試。而對于IO測試&#xff0c;不是很推薦sysbench&#xff0c;倒不是說它有錯誤&#xff0c;工具本身沒有任何問題&#xff0c;它的…

XCode、Objective-C、Cocoa 說的是幾樣東西

大部分有一點其他平臺開發基礎的初學者看到XCode&#xff0c;第一感想是磨拳擦掌&#xff0c;看到 Interface Builder之后&#xff0c;第一感想是躍躍欲試&#xff0c;而看到Objective-C的語法&#xff0c;第一感想就變成就望而卻步了。好吧&#xff0c;我是在說我自己。 如果…

java http2_探索HTTP/2: HTTP 2協議簡述(原)

探索HTTP/2: HTTP/2協議簡述HTTP/2的協議包含著兩個RFC&#xff1a;Hypertext Transfer Protocol Version 2 (RFC7540)&#xff0c;即HTTP/2&#xff1b;HPACK: Header Compression for HTTP/2 (RFC7541)&#xff0c;即HPACK。RFC7540描述了HTTP/2的語義&#xff0c;RFC7541則描…