要在mysql中获取两天之间的天数

时间:2017-11-15 06:03:03

标签: java mysql sql

MySql中是否有任何方法可以返回两个日期之间的天数。例如06/11/207是开始日期,12/11/2017是结束日期,那么我需要输出为:

  

周一,周二,周三,周四,周五,周六,周日

2 个答案:

答案 0 :(得分:0)

你可以试试这个:

您可以从此链接中获取F_TABLE_NUMBER_RANGE函数:

http://www.sqlteam.com/forums/topic.asp?TOPIC_ID=47685

declare @start_date     datetime
declare @end_date       datetime
declare @days           int

select @start_date  = '06/11/2017'
select @end_date    = '12/11/2017'

select @days = datediff(dd,@start_date,@end_date) +1

select
    [Date]      = dateadd(dd,number-1,@start_date),
    [Day of Week]   = datename(weekday,dateadd(dd,number-1,@start_date))
from
    dbo.F_TABLE_NUMBER_RANGE( 1, @days )
order by
    number

这是我为我欢呼的努力!

答案 1 :(得分:0)

TL;博士

使用Java。自动本地化。

myResultSet.getObject( … , LocalDate.class )   // Retrieve a `LocalDate` object from your database.
    .getDayOfWeek()                            // Fetch the `DayOfWeek` object appropriate for this date. Ex: DayOfWeek.MONDAY
    .getDisplayName(                           // Generate a String of the name of day-of-week.
        TextStyle.FULL ,                       // How long or abbreviated?
        Locale.US                              // Or Locale.CANADA_FRENCH, etc.
    )
  

周一

详细

通常最好在您的应用中进行此类转换,而不是SQL,恕我直言。

Java现在在Java 8及更高版本的 java.time 类中拥有业界领先的日期时框架。

LocalDate类表示没有时间且没有时区的仅限日期的值。

使用JDBC 4.2及更高版本,您可以直接与数据库交换 java.time 对象。

LocalDate localDate = myResultSet.getObject( … , LocalDate.class ) ;  // Retrieval.
myPreparedStatement.setObject( … , localDate ) ; // Insert/Update.

DayOfWeek枚举提供七个现有对象,一个星期中的每一天。使用getDisplayName方法生成星期几的自动本地化名称。

DayOfWeek dow = localDate.getDayOfWeek() ;
String output = dow.getDisplayName( TextStyle.FULL , Locale.CANADA_FRENCH ) ;
  

Lundi将军

或者,美国英语:

DayOfWeek dow = localDate.getDayOfWeek() ;
String output = dow.getDisplayName( TextStyle.FULL , Locale.US ) ;
  

周一

LocalDate个对象与isBeforeisAfter以及其他方法进行比较。通过调用LocalDate::plusDays来逐步循环每个日期。

关于 java.time

java.time框架内置于Java 8及更高版本中。这些类取代了麻烦的旧legacy日期时间类,例如java.util.DateCalendar和& SimpleDateFormat

现在位于Joda-Timemaintenance mode项目建议迁移到java.time类。

要了解详情,请参阅Oracle Tutorial。并搜索Stack Overflow以获取许多示例和解释。规范是JSR 310

您可以直接与数据库交换 java.time 对象。使用符合JDBC driver或更高版本的JDBC 4.2。不需要字符串,不需要java.sql.*类。

从哪里获取java.time类?

ThreeTen-Extra项目使用其他类扩展java.time。该项目是未来可能添加到java.time的试验场。您可以在此处找到一些有用的课程,例如IntervalYearWeekYearQuartermore