A. mysql資料庫里的日期用timestamp還是datetime好
mysql資料庫里的日期用timestamp還是datetime好 (1)4個位元組儲存
(2)值以UTC格式保存
(3)時區轉化 ,存儲時對當前的時區進行轉換,檢索時再轉換回當前的時區。
(4)TIMESTAMP值不能早於1970或晚於2037!
timestamp在資料庫里實際記載的時間是國際標准時間,同一個timestamp值在不同的時區檢索出來的日期時間是不一樣的,因為系統會根據時區的不同進行自動時區轉換,而datetime則不會進行轉換時區轉換,存儲時是什麼日期時間,檢索出來的就是存入時的日期時間,它不會有變化。至於這兩種日期時間類型哪種好是沒有定論的,要根據實際情況和應用需求做出取捨。
請注意由於無需實施時區轉換,系統處理dateime所產生的系統開銷要比timestamp小。
沒什麼好不好的,方便省事才是王道。都用datetime 你說呢,誰在乎那點存儲
類型
類型 存儲需求 格式 時間范圍
datetime 8個位元組 yyyy-mm-dd hh-mm-ss 1000-01-01 00:00:00 到9999-12-31 23:59:59 timestamp 4個位元組 yyyy-mm-dd hh-mm-ss 1970-01-01 00:00:00 到2037-12-31 23:59:59
timestamp類型會有時區變數的影響,跨時區使用時應注意
datetime 8個位元組 yyyy-mm-dd hh-mm-ss 1000-01-01 00:00:00 到9999-12-31 23:59:59
timestamp 4個位元組 yyyy-mm-dd hh-mm-ss 1970-01-01 00:00:00 到2037-12-31 23:59:59
timestamp類型會有時區變數的影響,跨時區使用時應注意
沒什麼好不好的,方便省事才是王道。都用datetime 你說呢,誰在乎那點存儲 類型 類型 存儲需求 格式 時間范圍 datetime 8個位元組
Mysql中經常用來存儲日期的數據類型有2種:Date、Datetime.
1.Date數據類型:用來存儲沒有時間的日期。Mysql獲取和顯示這個類型的格式為「YYYY-MM-DD」。支持的時間范圍為「1000-00-00」到「9999-12-31」。
2.Datetime類型:存儲既有日期又有時間的數據。存儲和顯示的格式為 「YYYY-MM-DD HH:MM:SS」。支持的時間范圍是「1000-00-00 00:00:00」到「9999-12-31 23:59:59」。
TIMESTAMP列用於INSERT或UPDATE操作時記錄日期和時間。如果你不分配一個值,表中的第一個TIMESTAMP列自動設置為最近操作的日期和時間。也可以通過分配一個NULL值,將TIMESTAMP列設置為當前的日期和時間。
TIMESTAMP值返回後顯示為'YYYY-MM-DDHH:MM:SS'格式的字元串,顯示寬度固定為19個字元。如果想要獲得數字值,應在TIMESTAMP列添加+0。
注釋:MySQL4.1以前使用的TIMESTAMP格式在MySQL5.1中不支持;關於舊格式的信息參見MySQL4.1參考手冊。
datetime
1. 佔用8個位元組
2. 允許為空值,可以自定義值,系統不會自動修改其值。
3. 實際格式儲存(Just stores what you have stored and retrieves the same thing which you have stored.)
4. 與時區無關(It has nothing to deal with the TIMEZONE and Conversion.)
5. 不可以設定默認值,所以在不允許為空值的情況下,必須手動指定datetime欄位的值才可以成功插入數據。
6. 可以在指定datetime欄位的值的時候使用now()變數來自動插入系統的當前時間。
結論:datetime類型適合用來記錄數據的原始的創建時間,因為無論你怎麼更改記錄中其他欄位的值,datetime欄位的值都不會改變,除非你手動更改它。
timestamp
1. 佔用4個位元組
2. 允許為空值,但是不可以自定義值,所以為空值時沒有任何意義。
3. TIMESTAMP值不能早於1970或晚於2037。這說明一個日期,例如'1968-01-01',雖然對於DATETIME或DATE值是有效的,但對於TIMESTAMP值卻無效,如果分配給這樣一個對象將被轉換為0。
4.值以UTC格式保存( it stores the number of milliseconds)
5.時區轉化 ,存儲時對當前的時區進行轉換,檢索時再轉換回當前的時區。
6. 默認值為CURRENT_TIMESTAMP(),其實也就是當前的系統時間。
7. 資料庫會自動修改其值,所以在插入記錄時不需要指定timestamp欄位的名稱和timestamp欄位的值,你只需要在設計表的時候添加一個timestamp欄位即可,插入後該欄位的值會自動變為當前系統時間。
8. 以後任何時間修改表中的記錄時,對應記錄的timestamp值會自動被更新為當前的系統時間。
結論:timestamp類型適合用來記錄數據的最後修改時間,因為只要你更改了記錄中其他欄位的值,timestamp欄位的值都會被自動更新。
看完這個比較你就知道用哪個好啦
我們公司一般用datatime,可控性比較強
jdbc查詢Mysql資料庫的日期問題
你沒說錯!
查出來可以保存為String類型 具體轉化一下就OK了
BBSXP 用的MYSQL資料庫還是MSSQL資料庫
BBSXP同時支持Aess資料庫和MSSQL資料庫
在Config.asp文件里定義:
IsSqlDataBase=1 '定義資料庫類別,0為Aess資料庫,1為SQL資料庫
不知道你是哪個版本,在BBSxp 2008 SP2里Config.asp文件在根目錄下。內容如下:
<%
InstallIPAddress="127.0.0.1" '安裝BBSXP的IP地址,針對install.asp的訪問許可權
TablePrefix="BBSXP_" '資料庫表的前輟名(一般不用更改)
IsSqlDataBase=0 '定義資料庫類別,0為Aess資料庫,1為SQL資料庫
If IsSqlDataBase=0 Then
'''''''''''''''''''''''''''''' Aess資料庫設置 '''''''''''''''''''''''''''''''''''''''''''''''''''''''''
SqlDataBase = "database/bbsxp2008.mdb" '資料庫路徑
SqlProvider = "Microsoft.Jet.OLEDB.4.0" '驅動程序[ Microsoft.Jet.OLEDB.4.0 Microsoft.ACE.OLEDB.12.0 ]
SqlPassword = "" 'ACCESS資料庫密碼
Connstr="Provider="&SqlProvider&";Jet Oledb:Database Password="&SqlPassword&"; Data Source="&Server.MapPath(SqlDataBase)
SqlNowString="Now()"
SqlChar="'"
IsSqlVer="ACCESS"
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
Else
'''''''''''''''''''''''''''''' SQL資料庫設置 ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
SqlLocalName = "(local)" '連接IP [ 本地用 (local) 外地用IP ]
SqlUserName = "sa" 'SQL用戶名
SqlPassword = "1234" 'SQL用戶密碼
SqlDataBase = "bbsxp" '資料庫名
SqlProvider = "SQLOLEDB" '驅動程序 [ SQLOLEDB SQLNCLI ]
ConnStr="Provider="&SqlProvider&"; User ID="&SqlUserName&"; Password="&SqlPassword&"; Initial CataLog="&SqlDataBase&"; Data Source="&SqlLocalName&";"
SqlNowString="GetDate()"
IsSqlVer="MSSQL"
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
End If
'''''''''''''''''''''''''' 以下為專業人員設置選項,普通用戶請勿修改 ''''''''''''''''''''''''''
Session.CodePage="936" '936(簡體中文) 950(繁體中文) 65001(Unicode)
BBSxpCharset="GB2312" 'GB2312(簡體中文) Big5(繁體中文) UTF-8(Unicode)
Response.Charset=BBSxpCharset
Response.Buffer=True
%>
註:
上面bbsxp7b1版本用的是Aess資料庫,因為IsSqlDataBase=0
mysql資料庫可以修改表的日期格式嗎
日期型的欄位 存儲的格式是固定的不可以修改, 需要輸出時 轉換成需要的格式, 如果你不想輸出時轉換 那麼需要 設為字元型的, 存儲時轉換. 總之 不管先轉還是後轉 ,一定要轉
B. 在MySQL資料庫裡面,怎麼使用SQL語句查詢功能把時間戳格式格式化為日期格式如:2013-02-28 6:00:00
你沒明確說要更新什麼欄位,只能給你個例子:
update archives set 欄位A =5 where from_unixtime(pubdate,'%Y-%m-%d %h:%i:%m')='2012-11-11 00:00:00';
------------------from_unixtime(pubdate,'%Y-%m-%d %h:%i:%m')這個的意思就是把時間戳變成日期
類似2012-11-11 00:10:10這樣的格式
如果說是要把pubdate欄位的內容直接更新成剛才那樣的日期格式,int類型的欄位是存儲不了的
C. mysql 查詢距離現在時間幾分鍾之前的語句
你用的是什麼語言。
php的話,寫個time函數,減去5分鍾的秒數,寫個查詢的sql語句。
D. 怎樣在mysql資料庫中設置可以顯示每條sql語句的執行時間
怎樣在mysql資料庫中設置可以顯示每條sql語句的執行時間?
SET STATISTICS TIME ON
SELECT * FROM table
E. MYSQL執行sql語句,批量更改為指定時間段的隨機時間
1、首先打開mysql,連接一個資料庫,點擊上方的【查詢】按鈕,再點擊【新建查詢】,如圖所示。
F. MYSQL經典SQL之星期問題
取值為0~6,對應星期一到星期日,每周以星期一為第一天
取值為1~7,對應星期日到星期六,每周以星期日為第一天
取值為Sunday~Saturday,對應星期日到星期六,第一天是星期日;
該函數與參數lc_time_names有關,如果設置此參數值為"zh_CN",則得到對應的中文名稱「星期日」~「星期六」
示例:
2017-01-02是星期一,使用這三個函數分別得到的是0,2,Monday
修改lc_time_names參數後,得到中文名稱:
該函數用於獲取日期是年度中的第幾周。該函數比較復雜,使用不同的mode,得到不同的結果。見下表:
例如,mode值為1,則每周的第一天搜哪為周一,week()函數的結果為0~53,如果第一個周天數少於4,則記為第0周,如果第一個周天數大於等於4,則記為第1周。
再如,mode值為2,則每周第一天為周日,week()函數的結果為1~53,如果第一個周里包含了周日,則記為第1周,如果第一個周里沒有周日,則記為上一年度的最後一周。
實際上,這個參數主要是為了解決跨年的周該如何歸屬的問題,是算作本年度的第一周,還是上一年度的最後一周,又或者是算作第0周。這需要根據使用場景和習慣來選擇。
但不管怎麼歸屬,week函數本身的取值范圍有限,所以再跨年的時間區間一般不用此函數(後邊舉例說明)。
參考:
http://dev.mysql.com/doc/refman/5.7/en/date-and-time-functions.html#function_week
假設我們有一張銷售表,內容如下:
現在,我們要統計每周的銷售額。
首先想到的是用week函數,計算日期對應的周數,然後按照這個周數來進行分組求和:
如果能保證這個日期區間是在一個年度內的,那麼用week函數完全沒有問題。
很不幸的是,通常日期區間是跨年的,例如我們這個示例中的數據,數蔽恰好有跨年的周,2010-12-31日是第52周,2011-01-01變成了2011年度的第0周,而實際上這兩天是在同一周。
要解決這個問題,我們不能指望week函數,因為該函數的返回結果總是在0~53循環,我們需要找一個固定時間為第一周,之後的周數累加而非循環。
例如,我們選擇2010-01-03為第一周的第一天,之後的任意一天201x-xx-xx距離2010-01-03的天數/7記為周數,得到結果如下:
以上解決方案中,我們選擇2010-01-03為起始日期,因為它離我們要統計的時間足夠遠,同時它是星期日(我們認為周日是一周的第一天)。
如世畢碼果我們需要把星期一當作第一天,只需要改為2010-01-04即可。
G. 在mysql中存入一個時間值的sql語句怎麼寫
通常,把資料庫欄位,設置為INT
時間用time()來保存進去,在顯示的地方用date()來處理,這樣子在以後的操作非常方便
H. 關於MySQL資料庫中date和time類型欄位
DateFormat dateFormat;
dateFormat = new SimpleDateFormat("yyyy-MM-dd");
String sToTimestamp = "2005-8-18 14:21:12.123";
java.util.Date timeDate = dateFormat.parse(sToTimestamp);
這樣就可以吧一個string轉成 util.date不過建議定義時間屬性的時候用TimeStamp
其中我自定義的時間字元串你可以取你頁面添加的
對,按你需要的格式化寫就可以了