找到 4379 篇文章 關於 MySQL

725 次瀏覽
藉助 DATEDIFF(expr1, expr2),我們可以找到兩個指定日期之間的工作日。例如,如果我們想找到“2017-05-27”和“2017-05-23”之間的工作日,則以下將是 MySQL 查詢:mysql> Select DATEDIFF('2017-05-27','2017-05-23') AS 'Total Business Days'; +----------------------+ | Total Business Days | +----------------------+ | 4 | +----------------------+ 1 row in set (0.00 sec)

98 次瀏覽
眾所周知,MySQL 支援用於參照完整性的外部索引鍵,但不支援 CHECK 約束。但是,我們可以使用觸發器來模擬它們。以下示例可以說明這一點:示例假設我們有一個名為“car”的表,它可以具有固定的語法註冊號,例如兩個字母、一個短劃線、三個數字、一個短劃線、兩個字母,如下所示:mysql> Create table car2 (number char(9)); Query OK, 0 rows affected (0.32 sec) mysql> Insert into car2 values('AB-235-YZ'); Query OK, 1 row affected (0.10 sec) 上面的值是有效的,但是…… 閱讀更多

79 次瀏覽
我們可以按如下方式計算日期:mysql> SET @year=2017, @week=15, @day=4; Query OK, 0 rows affected (0.00 sec) 以上查詢將分別在“year”、“week”和“day”變數中傳遞值“2017”、“15”、“4”。然後在應用以下查詢中的公式後,我們可以得到日期。mysql> SELECT Str_To_Date( Concat(@year,'-',@week,'-',If(@day=7,0,@day) ), '%Y-%U-%w' ) AS Date; +--------------+ | Date | +--------------+ | 2017-04-13 | +--------------+ 1 row in set (0.00 sec)

75 次瀏覽
眾所周知,MySQL 支援用於參照完整性的外部索引鍵,但不支援 CHECK 約束。但是,我們可以使用觸發器來模擬它們。以下示例可以說明這一點:示例假設我們有一個名為“car1”的表,它可以具有固定的語法註冊號,例如兩個字母、一個短劃線、三個數字、一個短劃線、兩個字母,如下所示:mysql> Create table car1 (number char(9)); Query OK, 0 rows affected (0.32 sec) mysql> Insert into car1 values('AB-235-YZ'); Query OK, 1 row affected (0.10 sec) 上面的值是有效的,但是…… 閱讀更多

285 次瀏覽
我們可以按如下方式根據出生日期計算年齡(以年為單位):mysql> SET @dob = '1984-01-17'; Query OK, 0 rows affected (0.00 sec) 以上查詢將在“dob”變數中傳遞值“1984-01-17”。然後在應用以下查詢中的公式後,我們可以得到年齡(以年為單位)。mysql> Select Date_format( From_Days( To_Days(Curdate()) - To_Days(@dob) ), '%Y' ) + 0 AS ‘Age in years; +---------------+ | ‘Age in years’| +---------------+ | 33 | +---------------+ 1 row in set (0.00 sec)

273 次瀏覽
啟用 SQL MODE 為 ALLOW_INVALID_DATES 後,MySQL 也能夠將無效日期儲存到表中。以下示例可以幫助理解這一點:mysql> Insert into order1234(ProductName, Quantity, Orderdate) values('B',500,'2015-11-31'); Query OK, 1 row affected (0.06 sec) mysql> Select * from order1234; +-------------+----------+--------------+ | ProductName | Quantity | OrderDate | +-------------+----------+--------------+ | A | 500 | 0000-00-00 | | B | 500 | 2015-11-31 | +-------------+----------+--------------+ 2 rows in set (0.00 sec)我們可以看到 MySQL 也將無效日期插入到表中。

367 次瀏覽
MySQL 在遇到超出範圍或無效日期時的響應將取決於 SQL MODE。如果我們啟用了 ALLOW_INVALID_DATES 模式,則 MySQL 將把超出範圍的值轉換為全零(即“0000:00:00 00:00:00”),並將其儲存到表中,而不會產生任何錯誤或警告。例如,我們可以按如下方式更改 SQL MODE,然後插入超出範圍的值:mysql> set sql_mode = 'ALLOW_INVALID_DATES'; Query OK, 0 rows affected (0.00 sec) mysql> Insert into order1234(productname, quantity, orderdate) values('A', 500, '999-05-100'); Query OK, 1 row affected, 1 warning (0.13 sec) mysql> Select * from order1234; ... 閱讀更多

166 次瀏覽
眾所周知,MySQL 支援用於參照完整性的外部索引鍵,但不支援 CHECK 約束。但是,我們可以使用觸發器來模擬它們。以下示例可以說明這一點:示例假設我們有一個名為“car”的表,它可以具有固定的語法註冊號,例如兩個字母、一個短劃線、三個數字、一個短劃線、兩個字母,如下所示:mysql> Create table car (number char(9)); Query OK, 0 rows affected (0.32 sec) mysql> Insert into car values('AB-235-YZ'); Query OK, 1 row affected (0.10 sec) 上面的值是有效的,但是…… 閱讀更多

4K+ 次瀏覽
MySQL 允許我們在表中的多列上新增 FOREIGN KEY 約束。條件是子表中的每個外部索引鍵必須引用不同的父表。示例假設我們有一個表“customer2”,它在欄位“cust_unq_id”上具有主鍵約束,如下所示:mysql> describe customer2; +-------------+-------------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +-------------+-------------+------+-----+---------+-------+ | cust_id | int(11) | YES | | NULL | | | First_name | varchar(20) | ... 閱讀更多

10K+ 次瀏覽
這兩種資料型別都以“YYYY-MM-DD HH:MM:SS”格式儲存資料,並且包含日期和時間。儘管有這些相似之處,但它們仍然存在以下差異:範圍 - Datetime 資料型別支援介於 1000-01-01 00:00:00 和 9999-12-31 23:59:59 之間的日期和時間。但是,timestamp 資料型別支援介於“1970-01-01 00:00:01”和“2038-01-19 08:44:07”之間的日期和時間。大小 - Datetime 需要 5 個位元組,以及用於儲存小數秒資料的額外 3 個位元組。另一方面,timestamp 資料型別需要 4 個位元組,以及用於儲存小數秒資料的額外 3 個位元組…… 閱讀更多