首页 文章

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

提问于
浏览
0

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

星期一,星期二,星期三,星期四,星期五,星期六,星期日

2 回答

  • 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
    

    这个我试过并为我工作干杯!

  • 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 ) ;
    

    隆迪

    或者,美国英语:

    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.DateCalendarSimpleDateFormat .

    现在位于maintenance modeJoda-Time项目建议迁移到java.time类 .

    要了解更多信息,请参阅Oracle Tutorial . 并搜索Stack Overflow以获取许多示例和解释 . 规格是JSR 310 .

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

    从哪里获取java.time类?

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

相关问题