2017-05-03 50 views
2

您好我正在使用我的系統,現在我堅持如何將每月和每年的分隔保存到單獨的列中。在我的系統中,我有一個的目標,讓用戶打印報告月份或每天的基礎上,我的解決方案是將每月和每年的一天保存到每個單獨的列..這是可行的嗎?對不起,我的英語不好 。如何將月份的每年保存到數據庫中

+0

哪個數據庫?什麼表結構? – user1664784

+0

我使用MySql,我有一個表名稱日誌..與列ID名稱日期..我想讓它ID名稱每年每一天。可能嗎 ? –

+0

@kaisarGreat請編輯您的問題以提供詳細信息和說明,而不是作爲評論發佈。因爲我們都知道世界各地都使用堆棧溢出 - 而且你的英語很好(比許多美國人的英語還要好),所以不需要爲你的英語道歉。 –

回答

2

例如,你可以把系統日期爲字符串,因爲它可以從該資源中可以看出:How to convert current date into string in java?

ZoneId zoneId = ZoneId.of("America/Montreal") ; // Or ZoneOffset.UTC or ZoneId.systemDefault() 
LocalDate today = LocalDate.now(zoneId) ; 
String output = today.toString() ; 

稍後,可以使用拆分爲需要的值分爲字符串(年,天月) ,例如,喜歡這裏:How to split a String by space

str = "2017-05-03"; 
String[] splited = str.split("-"); 

相反在上例中 「 - 」,也許,你需要使用的ASCII碼 「 - 」。唉,我忘了這

+0

對不起後期更新,這種方法適用於我。謝謝:D –

+0

謝謝,我很高興能夠有用 –

2

可以在DB使用LOCALDATE的從JDK 8日期時間API如下得到的年,月,日和堅持他們:

LocalDate date = LocalDate.now(); 
int year = date.getYear(); 
int month = date.getMonthValue(); // or Month month = date.getMonth() if you want month names 
int day = date.getDayOfMonth(); 
+0

很好的答案,但我建議在調用LocalDate時始終指定期望/預期時區'ZoneId'的可選參數。現在'而不是隱式地依賴於JVM的當前默認時區,該時區可以在運行時隨時改變。 –

1

其他的答案是關於使用正確的在Java中是LocalDate

數據庫

至於數據庫,定義列作爲一個日期,唯一的類型,如SQL Standard‘s typeDATE

JDBC

如果您JDBC driverJDBC 4.2符合,您可以使用java.time類型,如LocalDate直接。

myPreparedStmt.setObject(… , myLocalDate) ; 

和:

LocalDate ld = myResultSet.getObject(… , LocalDate.class) ; 

如果你的驅動程序不符合,回落到使用java.sql類型。您可以通過調用添加到舊類的新方法來轉換。但儘可能簡短地使用java.sql類型,使用java.time類來完成所有實際工作。

myPreparedStmt.setDate(… , java.sql.Date.valueOf(myLocalDate)) ; 

......還有......

LocalDate ld = myResultSet.getDate(…).toLocalDate() ; 
相關問題