1

我实际上在使用 slick 在 MySQL DB 中存储 DateTime 值时遇到问题,我有一个这样的案例类:

case class FacebookShares(
  var id: Int,
  var designID: Int,
  var shareOrgID: String,
  var sharerID: Int,
  var sharedLink: String,
  var sharedTimestamp: Instant,
  var sharedDatetime: DateTime,
  var modifiedTimestamp: Instant) {
  def this() = this(0, 0, "", 0, "", DateTime.now(DateTimeZone.forID("America/New_York")).toInstant, DateTime.now(DateTimeZone.forID("America/New_York")), DateTime.now.toInstant)
}

及其光滑的投影类:

class FacebookShareProjection(tag: Tag) extends Table[FacebookShares](tag, "facebook_shares_47") {
  def id: Column[Int] = column[Int]("id", O.PrimaryKey)
  def designID: Column[Int] = column[Int]("fs_design_id")
  def shareOrgID: Column[String] = column[String]("fs_share_org_id")
  def sharerID: Column[Int] = column[Int]("fs_sharer_id")
  def sharedLink: Column[String] = column[String]("fs_shared_link")
  def sharedTimestamp: Column[Instant] = column[Instant]("fs_shared_timestamp")
  def sharedDatetime: Column[DateTime] = column[DateTime]("fs_shared_datetime")
  def modifiedTimestamp: Column[Instant] = column[Instant]("fs_modified_timestamp")

  def * : ProvenShape[FacebookShares] = (id, designID, shareOrgID, sharerID, sharedLink, sharedTimestamp, sharedDatetime, modifiedTimestamp) <> (
    ((FacebookShares.apply _): (Int, Int, String, Int, String, Instant, DateTime, Instant) => FacebookShares).tupled,
    FacebookShares.unapply)

}

现在,当我尝试插入数据时,当我为“America/New_York”定义时区时,MySQL 表中的结果日期显示 UTC 时区的时间戳

def store() = {
    val timestamp = DateTime.now(DateTimeZone.forID("America/New_York")).toInstant
    SQLDB.withSession { implicit session =>
      shareProjection += FacebookShares(0, 0, "", 0, "", timestamp, DateTime.now(DateTimeZone.forID("America/New_York")), DateTime.now.toInstant)
    }
  }

为什么日期存储在 UTC 时区而不是 EST 时区

4

0 回答 0