2017-05-03 69 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() ; 
相关问题