找到关于数据库的6705 篇文章

如何在 MySQL 中查找两个指定日期之间的工作日?

Jennifer Nicholas
更新于 2020年1月28日 10:00:44

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)

我们如何使用 MySQL 生成的列来模拟 CHECK 约束?

Akshaya Akki
更新于 2020年6月19日 13:39:16

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)上述值是有效的,但是…… 阅读更多

在 MySQL 中,我们如何通过提供年份、周数和星期几来计算日期?星期几?

Vrundesha Joshi
更新于 2020年1月28日 10:04:30

80 次浏览

我们可以按如下方式计算日期: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)

我们如何使用视图来模拟 CHECK 约束?

Vikyath Ram
更新于 2020年6月19日 13:39:38

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)上述值是有效的,但是…… 阅读更多

如何在 MySQL 中根据出生日期计算年龄(以年为单位)?

usharani
更新于 2020年1月28日 10:08:56

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)

我们如何允许 MySQL 存储无效日期?

Rishi Rathor
更新于 2020年1月28日 10:11:12

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 也将无效日期插入表中。

当 MySQL 遇到超出范围的日期时会发生什么?

varun
更新于 2020年1月28日 10:13:49

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; ... 阅读更多

我们如何使用触发器来模拟 CHECK 约束?

Rama Giri
更新于 2020年6月19日 13:38:03

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)上述值是有效的,但是…… 阅读更多

我们如何对多个列分配 FOREIGN KEY 约束?

Monica Mona
更新于 2020年6月19日 13:37:15

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) | ... 阅读更多

MySQL DATETIME 和 TIMESTAMP 数据类型之间有什么区别?

Nancy Den
更新于 2020年6月19日 13:33:54

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 个字节…… 阅读更多

广告