SQL - 如何用其他日期时间替换日期时间值?

发布于 2024-10-16 17:50:50 字数 289 浏览 2 评论 0原文

在搞乱我的数据库之前,我有一个简单的问题:

用另一个日期时间值替换一个日期时间值的 SQL 命令是什么?我将用“0000-00-00 00:00:00”替换数据库表的单列中的所有日期时间。

我猜测 SQL 命令就像这个命令一样替换单个列/表中的所有字符串值?:

UPDATE table_name SET field_id = '0000-00-00 00:00:00'

这是我第一次像这样替换所有 DateTime 值 - 是的,我已经做了数据库备份,以防万一!

Before I go messing my database up, I have a quick question:

What is the SQL command to replace a datetime value with another datetime value? I'm going to replace all datetimes in a single column of my database table with '0000-00-00 00:00:00'.

I'm guessing that the SQL command is like this command to replace all string values in a single column/table?:

UPDATE table_name SET field_id = '0000-00-00 00:00:00'

This is my first time replacing all DateTime values like this - YES, I have already made a DB backup, just in case!

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

愁杀 2024-10-23 17:50:50

反驳乔的答案。简而言之,全力以赴。另外,您不需要明确写出 00:00:00。

drop table if exists testdt;
create table testdt (dt datetime);
insert testdt select curdate();

update testdt set dt = '0000-00-00';

select * from testdt;

输出:

dt
-------------------
0000-00-00 00:00:00

注意: http://dev.mysql .com/doc/refman/5.0/en/date-and-time-types.html

MySQL 还允许您将“0000-00-00”存储为“虚拟日期”(如果您不使用 NO_ZERO_DATE SQL 模式)。在某些情况下,这比使用 NULL 值更方便(并且使用更少的数据和索引空间)。

如果您使用的日期超出“1000-”的有效范围 01-01' 到 '9999-12-31',MySQL 以其全部智慧将让您存储它,甚至使用它!

drop table if exists testdt;
create table testdt (dt datetime);

insert testdt select curdate();
update testdt set dt = '0000-00-00';

insert testdt select '0010-01-01';
insert testdt select '1010-01-01';
insert testdt select '1000-00-00';
insert testdt select '0000-01-01';
select *, adddate(dt, interval 999 year) from testdt;

输出(月=日=0的无效日期无法使用)

dt                    adddate(dt, interval 999 year)
0000-00-00 00:00:00   NULL
0010-01-01 00:00:00   1009-01-01 00:00:00
1010-01-01 00:00:00   2009-01-01 00:00:00
1000-00-00 00:00:00   NULL
0000-01-01 00:00:00   0999-01-01 00:00:00

An answer to counter Joe's. In short, go for it. Also, you don't need to explicitly write out 00:00:00.

drop table if exists testdt;
create table testdt (dt datetime);
insert testdt select curdate();

update testdt set dt = '0000-00-00';

select * from testdt;

Output:

dt
-------------------
0000-00-00 00:00:00

Note: http://dev.mysql.com/doc/refman/5.0/en/date-and-time-types.html

MySQL also permits you to store '0000-00-00' as a “dummy date” (if you are not using the NO_ZERO_DATE SQL mode). This is in some cases more convenient (and uses less data and index space) than using NULL values.

If you use a date outside the valid range of '1000-01-01' to '9999-12-31', MySQL in all its wisdom will let you store it, and even use it!

drop table if exists testdt;
create table testdt (dt datetime);

insert testdt select curdate();
update testdt set dt = '0000-00-00';

insert testdt select '0010-01-01';
insert testdt select '1010-01-01';
insert testdt select '1000-00-00';
insert testdt select '0000-01-01';
select *, adddate(dt, interval 999 year) from testdt;

Output (the invalid dates with month=day=0 are unusable)

dt                    adddate(dt, interval 999 year)
0000-00-00 00:00:00   NULL
0010-01-01 00:00:00   1009-01-01 00:00:00
1010-01-01 00:00:00   2009-01-01 00:00:00
1000-00-00 00:00:00   NULL
0000-01-01 00:00:00   0999-01-01 00:00:00
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文