找到 4219 篇文章 适用于 MySQLi

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

Vrundesha Joshi
更新于 2020-01-28 10:04:30

80 次浏览

我们可以按如下方式计算日期 -mysql> SET @year=2017, @week=15, @day=4; Query OK, 0 rows affected (0.00 sec)以上查询将分别将值“2017”、“15”、“4”传递给“year”、“week”和“day”变量。然后在以下查询中应用公式后,我们可以得到日期。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-06-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-01-28 10:08:56

285 次浏览

我们可以按如下方式根据出生日期计算年龄(以年为单位) -mysql> SET @dob = '1984-01-17'; Query OK, 0 rows affected (0.00 sec)以上查询将值“1984-01-17”传递给“dob”变量。然后在以下查询中应用公式后,我们可以得到年龄(以年为单位)。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-01-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-01-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-06-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-06-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-06-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 个字节用于存储小数秒数据... 阅读更多

如何将 AUTO_INCREMENT 应用于列?

George John
更新于 2019-07-30 22:30:21

134 次浏览

AUTO_INCREMENT 表示该列将自动获取值。为了说明这一点,我们创建了一个名为“employees”的表,如下所示 - mysql> Show Create Table employees\G *************************** 1. row *************************** Table: employees Create Table: CREATE TABLE `employees` ( `Id` int(11) NOT NULL AUTO_INCREMENT, `Name` varchar(35) DEFAULT NULL, PRIMARY KEY (`Id`) ) ENGINE=InnoDB DEFAULT CHARSET=latin1 1 row in set (0.00 sec)从以上结果集中,我们可以看到列 id 被赋予了自动递增选项。现在,当我们在 Name 中插入值时... 阅读更多

如何在 MySQL 表中按日期搜索记录?

Prabhas
更新于 2020-01-28 09:22:39

888 次浏览

假设我们有一个名为“Order123”的表,其中包含ProductName、Quantity和OrderDate列,如下所示:
mysql> Select * from Order123;
+-------------+----------+------------+
| ProductName | Quantity | OrderDate  |
+-------------+----------+------------+
| A           | 100      | 2017-05-25 |
| B           | 105      | 2017-05-25 |
| C           | 55       | 2017-05-25 |
| D           | 250      | 2017-05-26 |
| E           | 500      | 2017-05-26 |
| ... 阅读更多

广告