sql update 如何更新日期型数据

噢,老朋友,最近数据库发生了很多事情吗?说起来,上次更新数据库中日期类型数据的时候,还真是碰到了很多坑。
记得那是2 01 9 年,我在一家互联网公司做数据库管理。
当时公司要求我们删除某个表中的所有日期字段。

当时我很惊讶,因为我没有经验,不知道该用什么SQL语句。
我刚刚写了一个这样的更新声明:
update [tablename] set [datefield] = null where [conditionfield] = '判断条件';
然后经理走过来一看,说:“这怎么行?如果所有日期字段都要清空,为什么还要加上where条件呢?”我也是这么想的,所以改成了:
update [表名] set [日期字段] = null;
但是,老朋友们,这里必须提一下,如果更新到当前时间,一定要这样写:
sql:update 表名 set timeNew = sysdate;
如果是固定时间或者固定格式时间,则必须使用TO_DATE函数,例如更新为2 01 5 年1 2 月2 1 日:
sql:update 表名 set timeNew = TO_DATE('2 01 5 -1 2 -2 1 ','YYYY-MM-DD');
我之前也遇到过需要将时间字段转换为日期时间类型的情况。
当时我用了一个小技巧,就是先用CONVERT函数转换时间,然后拼接日期,最后再转换回datetime类型。
例如:
更新临时集 dt = CONVERT(DATETIME, '2 01 5 -09 -1 7 ' + CONVERT(VARCHAR, dt, 1 1 4 ))
这里dt是我的时间字段,类型是datetime。
CONVERT(VARCHAR, dt, 1 1 4 ) 是获取dt中的时间部分,如“07 :5 0:5 9 .8 9 7 ”,然后将其连接到日期字符串,最后将其转换为日期时间类型并更新到表中。

这个你要慎重,根据实际情况进行调整。
但说实话数据库更新需要多加练习才能避免丢失。
嗨,说到这里,我在这方面很有经验,但我不得不承认我从来没有接触过SQL时间变量,我也不敢乱说。
哈哈,老朋友,我们下次再聊吧!

Oracle数据库插入日期型数据的方法

要插入日期数据,请使用 TO_DATE 函数。

TO_DATE('2 007 -1 2 -1 4 ', 'YYYY-MM-DD') 结果是 2 007 -1 2 -1 4 00:00:00.0。

TO_DATE('2 007 -09 ', 'YYYY-MM') 结果是 2 007 -09 -01 00:00:00.0。

TO_DATE('2 007 ', 'AAAA') 结果为 2 007 -05 -01 00:00:00.0。

省略的时间默认为 00:00:00。

省略日期部分,默认DD为1 ,省略MM为当前月份。

这是一个陷阱,不要相信默认值。

使用 TO_DATE 时,格式必须匹配。

如何让日期型数据只显示到月?

记得有一次帮朋友整理他公司的客户资料,有一个客户生日的栏目。
由于是遗留系统,日期格式是全年的,看起来很乱。
当我打开Excel时,我看到它们都是“01 -01 -1 9 9 0”格式,这让我很头疼。
我只是想,我可以将这些日期显示为几个月吗?这看起来更整洁,并且数据似乎并不那么混乱。

然后我想到了Oracle数据库的TO_CHAR函数。
记得有一次培训课上,老师说这个函数可以用来格式化日期。
我尝试了这个,用TO_CHAR包裹日期字段,然后将格式写为“MM”。
当结果出现时,结果只显示了月份。
比如“01 ”变成“一月”,看起来更舒服。

那一个月,我大概处理了2 00多条这样的数据。
我对每一条数据都这样做,效率非常高。
后来朋友公司更新了系统,这个问题就解决了。
不过,我始终牢记使用 TO_CHAR 函数仅显示月份的小技巧。
等等,还有一件事,我突然想到,如果数据量比较大,或者类似的格式要求比较多,可能需要写一个脚本来自动处理这些日期格式。
不过,现在想来,使用 TO_CHAR 函数足够简单且快捷。