1. 程式人生 > >記錄問題:mysql中datetime型別欄位在後臺讀取與前端展示

記錄問題:mysql中datetime型別欄位在後臺讀取與前端展示

1.資料庫欄位型別為datetime,model裡:
@Column(name = "createtime", length = 20)
private Date createTime;

2.兩種將資料傳到前端的方法

方法一:

List<Map<String, Object>> list=targetService.findAll();//這裡獲取到目標list,省略業務方法
List<Map<String, Object>> newList = new ArrayList<Map<String, Object>>();
for (Map<String, Object> li : list) {
    //String s = li.get("createtime").toString();//覆蓋Date物件為字串
    //li.put("createtime", s);
    newList.add(task);
}
response.setHeader("Content-type", "text/html;charset=UTF-8");
response.setCharacterEncoding("UTF-8");
response.getWriter().print(JSONArray.fromObject(newList).toString());//資料發往前端

前端用$.post請求獲得資料:

$.post("/url",{key1:value1,key2:value2},function(res){
    console.log(res);//這裡獲取到的日期是createtime:{"date":3,"hours":11,"seconds":4,"month":4,"nanos":0,"timezoneOffset":-480,"year":118,"minutes":6,"time":1525316764000,"day":4}
};

在不是非同步獲取的情況下使用thymeleaf模板引擎渲染資料:

<td th:text="${#dates.format(listist.createtime, 'yyyy-MM-dd  HH:mm:ss')}">建立時間</td>//正確顯示時間為2018-05-03 15:01:10

而通過$.post請求獲取的話,由於得到日期的是一個物件(如註釋),顯示為[object,object],需要重新format為指定的格式2018-05-03 15:01:10。原因是:JSONArray.fromObject會把datetime物件轉換為json字串。

嘗試:

將Map<String, Object>中的createtime覆蓋為字串,即方法一註釋部分。將Date型別屬性轉換成字串,為2018-05-03 15:01:10.0多了“.0”,原因是從資料庫查詢的datetime時間精確到毫秒。

方法二:

類似方法一,用$.ajax請求得到的卻是一個時間戳:1525330869000。。。Why?

3.總結:

只有在非同步獲取資料庫datetime型別資料並渲染到頁面的時候會有這種問題,獲取到createtime:{"date":3,"hours":11,"seconds":4,"month":4,"nanos":0,"timezoneOffset":-480,"year":118,"minutes":6,"time":1525316764000,"day":4}或者時間戳,可以在前端js處理成要展示的格式,也可以像上面寫的直接後臺覆蓋該物件在map中的鍵值對。

以上是初次遇到該問題,後續再遇到補充。

相關推薦

記錄問題mysqldatetime型別後臺讀取前端展示

1.資料庫欄位型別為datetime,model裡:@Column(name = "createtime", length = 20) private Date createTime;2.兩種將資料傳到前端的方法方法一:List<Map<String, Objec

python將系統時間寫入mysqldatetime型別

dt=datetime.datetime.now().strftime("%Y-%m-%d%H:%M:%S") models.ptask.date_changed=datetime.datetime.fromtimestamp(time.mktime(time.strpti

Incorrect datetime value: '' for column Mysql5.6 datetime 型別的插入問題

在5.0.45-community-nt-log中能正常執行的SQL,在5.6.21中不正常。 1. 1檢視資料庫版本 mysql> select database(), version(); +------------+-----------------------

MySQLfloat型別的顯示問題

由於受到版本和平臺的限制,同樣的SQL在不同的平臺上執行的結果可能會不一致。 影響:1. mysql在升級或遷移時可能會導致float型別的資料發生變化。 2. mysqldump建立的備份在slave上進行恢復,可能會遇到float型別的資料在master和slave上

mysql新建表datetime型別不能設定當前預設時間解決方法

方法一: 由於MySQL目前欄位的預設值不支援函式,所以以create_time datetime default now() 的形式設定預設值是不可能的。代替的方案是使用TIMESTAMP型別代替DATETIME類 型。 TIMESTAMP列型別自動地用當前的日期和時間標

informix 建立DateTime型別

建立表如下:  CREATE TABLE WORKORDER_VISIT_LOG (  VISIT_LOG_id VARCHAR(30) NOT NULL,VISIT_DATE Date year to day, VISIT_TIME DateTime year to se

MySQL資料庫tinyint型別讀取資料為true和false

vertx jdbc 取myaql資料也存在這樣的問題,按照如下在進行sql語句編寫時候加上*1就i可以了 今天遇到這麼一個問題,公司最近在做一個活動,然後資料庫需要建表,其中有個欄位是關於獎勵發放的狀態的欄位,結果讀取出來的值為true 一、解決讀取資料為true/

學習Discuz! X3.2記錄自定義論壇帖子,在門戶顯示帖子列表

    想製作一個類似58同城的網站,裡面的帖子欄位都是自定義的。在實際工作中,這種需求應該是非常普遍的,例如求職招聘,房產銷售,等等。     現在還不清楚實現過程是否正確,這裡記錄一下。     * 論壇——版塊管理,製作如下板塊。     * 論壇——分類資

MySql的longtext的返回問題

最近開發中用到了longtext這種欄位。在mysql中該欄位的最大長度為4G 如下圖所示 開發中遇到的一個問題就是。例如有個article表,然後我們的頁面要將資料以列表的形式展示到前端(只顯示幾個欄位,如作者,標題等等,例如放到table中顯示多條記錄),但是是將該表中的所有

Thinkphp如何表達MYSQL的某不為空is not null

Thinkphp 的文件經常不夠完整的表達MYSQL的各種組合,很多東西需要被嘗試後才能知道,筆者就遇到過一個問題,MYSQL查詢語句中有個表示式is not null ,在thinkphp中就不能用“=” 或者簡單的eq等來表示。 有一種變相的處理方法就是直接把where中的array引數換成st

python處理插入mysql的bit

mysql中有一個表goods,欄位較多,還有幾個bit型別的。按照我的一般辦法,是把引數定義成dict,如: goodsInfo = {}      goodsInfo['id'] = self.get_argument('id',''

Mybatis框架--Ibatis框架踩坑01 -- JavaBigInteger型別問題!

       在Mybatis框架、 Ibatis框架中, 不支援Java中的 java.math.BigInteger 型別欄位, 支援 java.math.BigDecimal 型別欄位。若Java實體類中,使用 java.math.BigInteger 型別欄位,在

Mybatis處理DB2Blob型別的一種方法

簡單來說,就是把Blob欄位對應的屬性的型別設定為byte[],然後在對映xml中存的時候在該欄位出指定為Blob型別就可以了。 例子 EB_COMM_NEWS表中,CONTENT為BLOB型別 在實體類EbCommNews中,對應的屬性為private byte[] CON

Mysql判斷一個是不是為null注意點

       今天查詢資料的時候,要查詢某一個欄位為null的情況,第一反應就是select * from xxx where xx = NULL; 這是不對的,資料是查不出來的,正確的應該是: se

mysql實現按部分升序,部分降序的方法

mysql order排序時可以通過asc引數實現升序,desc引數實現降序。 例如: 升序排序:select   *  from  表名 order by  欄位 asc  (mysql預設是升序排列) 降序排序:select   *  from  表名 order by

Sql Server資料庫Identity型別的使用

大家在建立資料庫的時候肯定是經常使用Identity標識欄位型別的。下面就介紹兩個使用這種型別欄位的小技巧。 1.讓標識欄位從指定的數字開始計數: DBCC checkident (TableName,reseed,計數值-1) 如:讓customers表重新從1開始計數 d

jdbcTemplate更新mysql的blob型別

import java.io.ByteArrayInputStream; import java.io.File; import java.io.FileInputStream; import java.io.InputStream; import java.sq

MySql查詢int型別作查詢條件注意事項

今天使用MySql查詢時,發現一個詭異的現象,id是int型別自增主鍵,傳入查詢為UUID隨機字串,居然查到了記錄,如圖: 研究發現,MySql以字串第一個字元開始遍歷,遇到非數字則結束,遍歷到的數字作為查詢條件,如上圖第一個字母前的數字“1”作為條件,查詢到Id為“1

mysql(自動新增系統時間)timestamp型別的CURRENT_TIMESTAMPON UPDATE CURRENT_TIMESTAMP屬性

timestamp有兩個屬性,分別是CURRENT_TIMESTAMP 和ON UPDATE CURRENT_TIMESTAMP兩種,使用情況分別如下: 1.CURRENT_TIMESTAMP  當要向資料庫執行insert操作時,如果有個timestamp欄位屬性設為 

Oraclevarchar2型別長度限制使用問題

為紀念中華人民共和國建軍90週年,特此一篇,以此紀念,我軍威武!!!一、問題背景專案中商品釋出,卻沒有儲存成功。二、問題定位初步判斷向資料庫中儲存時出現了錯誤,檢視日誌檔案,由於日誌檔案過大就採用grep進行搜尋(再一次說明grep 的強大)其中 “ReserveProductService.update”