當前位置:首頁 » 運動資訊 » date可以存儲時間和日期

date可以存儲時間和日期

發布時間: 2023-05-16 03:59:34

① mysql中DATETIME,DATE和TIMESTAMP的區別

人家那裡 拈 來的,希望能幫到你

DATETIME、DATE 和 TIMESTAMP 類型是相似的
本篇描述了它們的特性以及它們的相似點與不同點 :

DATETIME 類型可用於需要同時包含日期和時間信息的值。MySQL 以 'YYYY-MM-DD HH:MM:SS' 格式檢索與顯示
DATETIME 類型。支持的范圍是 '1000-01-01 00:00:00' 到 '9999-12-31
23:59:59'。(「支持」的含義是,盡管更早的值可能工作,但不能保證他們均可以。)

DATE 類型可用於需要一個日期值而不需要時間部分時。MySQL 以 'YYYY-MM-DD' 格式檢索與顯示 DATE 值。支持的范圍是 '1000-01-01' 到 '9999-12-31'。

TIMESTAMP 列類型提供了一種類型,通過它你可以以當前操作的日期和時間自動地標記 Insert 或Update 操作。如果一張表中有多個 TIMESTAMP 列,只有第一個被自動更新。
「完整」TIMESTAMP格式是14位,但TIMESTAMP列也可以用更短的顯示尺寸創造
最常見的顯示尺寸是6、8、12、和14。
你可以在創建表時指定一個任意的顯示尺寸,但是定義列長為0或比14大均會被強制定義為列長14。
列長在從1~13范圍的奇數值尺寸均被強制為下一個更大的偶數。
列如:
定義欄位長度 強制欄位長度
TIMESTAMP(0) -> TIMESTAMP(14)
TIMESTAMP(15)-> TIMESTAMP(14)
TIMESTAMP(1) -> TIMESTAMP(2)
TIMESTAMP(5) -> TIMESTAMP(6)
所有的TIMESTAMP列都有同樣的存儲大小,
使用被指定的時期時間值的完整精度(14位)存儲合法的值不考慮顯示尺寸。
不合法的日期,將會被強制為0存儲
自動更新第一個 TIMESTAMP 列在下列任何條件下發生:
列值沒有明確地在一個 Insert 或 LOAD DATA INFILE 語句中被指定。
列值沒有明確地在一個 Update 語句中被指定,並且其它的一些列值已發生改變。(注意,當一個 Update 設置一個列值為它原有值時,這將不會引起 TIMESTAMP 列的更新,因為,如果你設置一個列值為它當前值時,MySQL 為了效率為忽略更新。)
明確地以 NULL 設置 TIMESTAMP 列。
第一個列以外其它 TIMESTAMP 列,可以設置到當前的日期和時間,只要將該列賦值 NULL 或 NOW()。
任何 TIMESTAMP 列均可以被設置一個不同於當前操作日期與時間的值,這通過為該列明確指定一個你所期望的值來實現旦嘩。這也適用於第一個
TIMESTAMP 列。這個選擇性是很有用的,舉例來說,當你希望 TIMESTAMP
列保存該記錄行被新添加時的當前的日期和時間,但該值不再發生改變,無論以後是否對該記錄行進行過更新:
當該記錄行被建立時,讓 MySQL 設置該列值。這將初始化該列為當前日期和時間。
以後當你對該記錄行的其它列執行更新時,為 TIMESTAMP 列值明確地指定為它原來的值。
另一方面,你可能發現更容易的方姿遲源法,使用 DATETIME 列,當新建記錄行時以 NOW() 初始化該列,以後在對該記錄行進行更新時不再處理它。
示例(譯者注):
mysql> Create TABLE `tA` (
-> `id` int(3) unsigned NOT NULL auto_increment,
-> `date1` timestamp(14) NOT NULL,
-> `date2` timestamp(14) NOT NULL,
-> PRIMARY KEY (`id`)
-> ) TYPE=MyISAM;
Query OK, 0 rows affected (0.01 sec)
mysql> Insert INTO `tA` SET `id` = 1;
Query OK, 1 row affected (0.02 sec)
# 沒有明確地指定第跡態一個 timestamp 列值,該列值被設為插入的當前時刻
# 沒有明確地指定其它的 timestamp 列值,MySQL 則認為插入的是一個非法值,而該列值被設為0
mysql> Insert INTO `tA` S (2, NOW(), NULL);
Query OK, 1 row affected (0.01 sec)
mysql> Select * FROM `tA`;
+----+----------------+----------------+
| id | date1 | date2 |
+----+----------------+----------------+
| 1 | 20030503104118 | 00000000000000 |
| 2 | 20030503104254 | 20030503104254 |
+----+----------------+----------------+
2 rows in set (0.00 sec)
mysql> Update `tA` SET `id` = 3 Where `id` = 1;
Query OK, 1 row affected (0.01 sec)
Rows matched: 1 Changed: 1 Warnings: 0
# 對某一記錄行進行了更新,第一個 timestamp 列值也將被更新
mysql> Update `tA` SET `id` = 2 Where `id` = 2;
Query OK, 0 rows affected (0.00 sec)
Rows matched: 1 Changed: 0 Warnings: 0
# MySQL 忽略了這次操作,第一個 timestamp 列值不會被更新
mysql> Select * FROM `tA`;
+----+----------------+----------------+
| id | date1 | date2 |
+----+----------------+----------------+
| 3 | 20030503104538 | 00000000000000 |
| 2 | 20030503104254 | 20030503104254 |
+----+----------------+----------------+
2 rows in set (0.00 sec)
mysql> Update `tA` SET `id` = 1,`date1`=`date1` Where `id` = 3;
Query OK, 1 row affected (0.00 sec)
Rows matched: 1 Changed: 1 Warnings: 0
# 明確地指定了第一個 timestamp 列值為它原有值,該值將不會被更新
mysql> Select * FROM `tA`;
+----+----------------+----------------+
| id | date1 | date2 |
+----+----------------+----------------+
| 1 | 20030503104538 | 00000000000000 |
| 2 | 20030503104254 | 20030503104254 |
+----+----------------+----------------+
2 rows in set (0.00 sec)

② 定義一個日期類 Date,該類對象存放一個日期,可以提供的操作有: void GetDate( )

我給你加了不少合法性檢查,使用默認構造函數構造時返回當前日期,你可以再main函數中多測試一下有沒有問題,比如閏年二月月末增加一天,12月31號增加一天這些,我就只按照想法來寫,沒有完全測試過。代碼:

Date.java:

import java.util.Arrays;
import java.util.Calendar;
import java.util.List;

public class Date {
private int y;
private int m;
private int d;
//定義小月smallM 後續經過判斷控制,不在小月中的月份都是大月
private static List<Integer> smallM = Arrays.asList(4, 6, 9, 11);

public Date() {//默認構造函數,返回當前日期
Calendar calendar = Calendar.getInstance();
this.y = calendar.get(Calendar.YEAR);
this.m = calendar.get(Calendar.MONTH);
this.d = calendar.get(Calendar.DAY_OF_MONTH);
}

public Date(int y, int m, int d) throws Exception {
SetDate(y, m, d);
}

public Date(Date date) {
this.y = date.y;
this.m = date.m;
this.d = date.d;
}


void GetDate() {//取日期值,格式如「2012 年 2 月 5 日」
System.out.println(this.y + " 年 " + this.m + " 月 " + this.d + " 日");
}

int GetYear() {//取年份
return this.y;
}

int GetMonth() {//取月份
return this.m;
}

int GetDay() {//取日期
return this.d;
}

void SetDate(int y, int m, int d) throws Exception {//設置日期值
if (y < 0 || m < 0 || d < 0) {
throw new Exception("年、月、日均不能出現負數");
}
if (m > 12) {
throw new Exception("月份不能大於12月");
}
if (m == 2) {//二月特殊處理
if (y % 4 != 0 && d > 28) {
throw new Exception("平年二月不能大於28天");
} else if (y % 4 == 0 && d >猜正帶 29) {
throw new Exception("閏年二月不能大於29天");
}
} else if (smallM.contains(m)) {//小月
if (d > 30) {
throw new Exception("小月天數不能大於30天");
}
} else {//剩餘的都是大月
if (d > 31) {
throw new Exception("大月天數不能大於31天");
}
}
//所有不合法檢查判斷後,就可以賦值了
this.y = y;
this.m = m;
this.d = d;
}

void AddOneDay() {//日期增加一天
if (this.m == 2) {//還是先清攜對2月進行特殊處理
if (this.y % 4 == 0) {//閏年
if (this.d == 29) {//閏穗蘆年的2月29號增加一天為3月1號
this.m = 3;
this.d = 1;
return;
}
} else {
if (this.d == 28) {//平年的2月28號增加一天為3月1號
this.m = 3;
this.d = 1;
return;
}
}
} else if (smallM.contains(this.m)) {//小月的30號增加一天為下月1號
if (this.d == 30) {
this.m += 1;
this.d = 1;
return;
}
} else {//其他的都是大月
if (this.m == 12) {//12月份特殊處理
if (this.d == 31) {//12月31號增加一天為下一年的1月1號
this.y += 1;
this.m = 1;
this.d = 1;
return;
}
} else {
if (this.d == 31) {//大月的31號增加一天為下月1號
this.m += 1;
this.d = 1;
return;
}
}
}
//剩下的請款不是月末,號數直接加1即可
this.d += 1;
}
}

測試類:

public class T {
public static void main(String[] args) throws Exception {
Date d1 = new Date(2001, 5, 8);//用所給日期定義一個日期變數
Date d2 = new Date();//定義一個日期對象
Date d3 = new Date(d1);//用已有的日期構造一個新對象

d1.GetDate();
d2.GetDate();
d3.GetDate();

System.out.println(" 增加一天:");
d1.AddOneDay();
d2.AddOneDay();
d3.AddOneDay();

d1.GetDate();
d2.GetDate();
d3.GetDate();
}
}

運行結果:

③ java的類Date和Timestamp什麼區別

1、主要是精鏈彎度問題,date沒有ms,而timestamp是有ms的,所以date的精度要低於timestamp。
而且二者可以互相轉換。
除此之外,沒禪喚皮有什麼不同,
再思考下吧賀差。

④ SQL 中 date 與datetime的區別

區別1:

①date類型可用於需要一個日期值而不需要時間部分時;

②datetime類型:可用於需要同時包含日期和時間信息的值。

區別2:

①date:MySQL 以 'YYYY-MM-DD' 格式檢索與顯示date值;

②datetime:MySQL 以 'YYYY-MM-DD HH:mm:ss'格式檢索與顯示 DATETIME 類型。

(4)date可以存儲時間和日期擴展閱讀:

SQL:

結構化查詢語言是高級的非過程化編程語言,允許用戶在高層數據結構上工作。它不要求用戶指定對數據的存放方法,也不需要用戶了解具體的數據存放方式,所以具有完全不同底層結構的不同資料庫系統, 可以使用相同的結構化查詢語言作為數據輸入與管理的介面。

結構化查詢語言語句可以嵌套,這使它具有極大的靈活性和強大的功能。

1986年10月,美國國家標准協會對SQL進行規范後,以此作為關系式資料庫管理系統的標准語言(ANSI X3. 135-1986),1987年得到國際標准組織的支持下成為國際標准。

不過各種通行的資料庫系統在其實踐過程中都對SQL規范作了某些編改和擴充。

所以,實際上不同資料庫系統之間的SQL不能完全相互通用。

date:

(1)省略 年/月/日 顯示系統日期並提示輸入新的日期,不修改則可直接按回車鍵,要修改則直接輸入新日期。

⑵當機器開始啟動時,有自動處理文件培敗(AUTOEXEC.BAT)被執行,則系統不提示輸入系統日期。否則,提示輸入新日期和時間。

DateTimePicker控制項:

C/S設計中的DateTimePicker控制項[1],有兩種操作模式:

1.下拉式日歷模式(預設)—允許用戶顯示一種能夠用來選擇日期的下拉式日歷。

2.時間格式模式—允許用戶在日期顯示中選擇一個欄位(配粗顫例凳掘如:月、日、年等等),按下控制項右邊的上下箭頭來設置它的值。

可以自定義控制項的下拉式日歷的外觀。

使用各種顏色屬性,例如CalendarBackColor,CalendarForeColor,CalendarTitleBackColor,CalendarTitleForeColor和CalendarTrailingForeColor,允許創建屬於您自己的顏色方案。

可以使用鍵盤或滑鼠對控制項進行瀏覽。下拉式日歷有兩個按鈕使您能夠滾動月份數據出入視圖。

⑤ mysql 時間欄位用什麼類弄,長度是多少

mysql時間欄位用:Date、Datetime和Timestamp。

(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」。

(3)「Timestamp」類型:存儲日期和時間的數據。 存儲和顯示格式與日期時間相同。 支持的時間長度范圍是「 1970-01-01 00:00:01」至「 2038-01-19 03:14:07」。

所有不符合上述格式的數據都將轉換為0值的相應類型。

(5)date可以存儲時間和日期擴展閱讀:

MySQL主要分為三種類型:字元串,日期和數字(每種類型實際上都有一個二進制類型,但並不常用)。

*字元串分為定長char和不定長度varchar,char以聲明的長度為嫌鏈准,而varchar的長度與值的長度和字元集有關芹握孫。

*數字和日期均為固定長度的欄位。 不同的類型具有不同的長度。 例如,Datetime是5.6.4之後的5個位元組,之前的是8個位元組; timestamp是4個位元組,因為其存儲整數,小數部分的長度通常與位數有關。

⑥ 資料庫中日期型數據的長度是幾個位元組

MYSQL,datetime類型長度填8位。

日期型(DATETIME)數據是表示日期數據,用字母D表示。日期的默認格式是{mm/dd/yyyy},其中mm表示月分,dd表示日期,yyyy表示年度,固定長度為8位。日期范圍為介於 100 到 9999 年的日期或時間數值。

(6)date可以存儲時間和日期擴展閱讀:

MySQL主要分為三種類型:字元串,日期和數字(每種類型實際上都有一個二進制類型,但並不常用)。

*字元串分為明賣定長char和不定長度varchar,char以聲明的長度為准,而varchar的長度與值的長度和字元集有關。

*數字和日期均為固定長度鎮掘的激旅逗欄位。不同的類型具有不同的長度。例如,Datetime是5.6.4之後的5個位元組,之前的是8個位元組;timestamp是4個位元組,因為其存儲整數,小數部分的長度通常與位數有關。

⑦ 資料庫datetime是什麼類型

datetime類悉粗頃型:可用於需要同時包含日期和時間信息的值。

datetime:MySQL 以 'YYYY-MM-DD HH:mm:ss'格式檢索與顯示 DATETIME 類型。

DateTime 日期和時間部分,可以表示的日期范圍從公元1753年1月1日00:00:00.000 到9999年12月31日23:59:59.997 ,精確到3.33毫秒,它需要8個位元組的存儲空間,其中前4個位元組用於存儲1900年1月1日以前或以後的天數,數值分正負,正數表示在此日期之後的日期,負數表示在此日期之前的日期;後4個位元組用於存儲從此日零時起所指定的時間經過的毫秒數。

(7)date可以存儲時間和日期擴展閱讀

在MySQL中創建表時,很容易通過類型介紹就能選擇到合適自己的數據類型。不過到底是選擇 datetime 還是 timestamp,凳灶可能會有點犯難。這兩個日期時間類型各有優點:datetime 的日期范圍比較大;timestamp 所佔存儲空間比較小,只是 datetime 的一半。

另外,timestamp 類型的列還有個特性:默認情況睜陸下,在 insert, update 數據時,timestamp 列會自動以當前時間(CURRENT_TIMESTAMP)填充/更新。「自動」的意思就是,你不去管它,MySQL 會替你去處理。

參考資料來源:網路-SQL數據類型

⑧ 中一般是怎麼存放時間類型到資料庫中的

中一般是怎麼存放時間類型到資料庫中的
Mysql中經常用來存儲日期的數據類型有三好核扒種:Date、Datetime、Timestamp。

Date數據類型氏鄭:用來存儲沒有時間的日期。Mysql獲取和顯示這個類型的格式為「YYYY-MM-DD」。支持的時間范圍為「1000-00-00」到「9999-12-31」。

Datetime類型:存儲既有日期又有時間的數據。存儲和顯示的格式為 「YYYY-MM-DD HH:MM:SS」。支持的時間范圍是「1000-00-00 00:00:00」到「9999-12-31 23:59:59」。

Timestamp類型:也是存儲既有日期又有時間的數據友昌。存儲和顯示的格式跟Datetime一樣。支持的時間范圍是「1970-01-01 00:00:01」到「2038-01-19 03:14:07」。

所有不符合上面所述格式的數據都會被轉換為相應類型的0值。(0000-00-00或者0000-00-00 00:00:00)

⑨ 資料庫中 日期的幾種表示方法

Mysql中經常用來存儲日期的數據類型有三種:Date、Datetime、Timestamp。

【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」。

【3】Timestamp類型:也是存儲既有日期又有時間的數據。存儲和顯示的格式跟Datetime一樣。支持的時間范圍是「1970-01-01 00:00:01」到「2038-01-19 03:14:07」。

(9)date可以存儲時間和日期擴展閱讀

切記不要用字元串存儲日期

這種存儲日期的方式的優點還是有的,就是簡單直白,容易上手。但是,這是不正確的做法,主要會有下面兩個問題:

1、字元串佔用的空間更大。

2、字元串存儲的日期比較效率比較低(逐個字元進行比對),無法用日期相關的 API 進行計算和比較。

DateTime 類型沒有時區信息的

DateTime 類型是沒有時區信息的(時區無關),DateTime 類型保存的時間都是當前會話所設置的時區對應的時間。

當你的時區更換之後,比如你的伺服器更換地址或者更換客戶端連接時區設置的話,源廳禪就會導致你從資料庫中讀出的時間錯誤。不伏攜要小看這個問題,很多系統就是因為這個問題鬧出了很多笑話。

Timestamp 和時區有關。Timestamp 類型欄位的值會隨著伺服器時區的變化而變化,自動換算成相應的時間,說簡單點就是在不同時區,查詢到同一個條記錄此欄位的值會不一樣。