gpt4 book ai didi

sql - 将 YYYYMMDD 转换为 DATE

转载 作者:行者123 更新时间:2023-12-02 08:11:59 36 4
gpt4 key购买 nike

我在 varchar 中有一堆日期,如下所示:

20080107
20090101
20100405
...

如何将它们转换为这样的日期格式:

2008-01-07
2009-01-01
2010-04-05

我尝试过使用这个:

SELECT [FIRST_NAME]
,[MIDDLE_NAME]
,[LAST_NAME]
,cast([GRADUATION_DATE] as date)
FROM mydb

但收到此消息:

Msg 241, Level 16, State 1, Line 2
Conversion failed when converting date and/or time from character string.

最佳答案

发生错误是因为您(或设计此表的任何人)have a bunch of dates in VARCHAR 。为什么您(或设计此表的人)将日期存储为字符串?您(或设计此表的人)是否也将工资、价格和距离存储为字符串?

要查找导致问题的值(以便您(或设计此表的任何人)可以修复它们):

SELECT GRADUATION_DATE FROM mydb
WHERE ISDATE(GRADUATION_DATE) = 0;

打赌你至少有一行。修复这些值,然后修复表。或者询问设计 table 的人来修理 table 。确实不错。

ALTER TABLE mydb ALTER COLUMN GRADUATION_DATE DATE;

现在您不必担心格式问题 - 您始终可以将格式设置为 YYYYMMDDYYYY-MM-DD在客户端上,或使用CONVERT在 SQL 中。当您有一个有效日期作为字符串文字时,您可以使用:

SELECT CONVERT(CHAR(10), CONVERT(datetime, '20120101'), 120);

...但这最好在客户端上完成(如果有的话)。

有一个流行的术语——垃圾进,垃圾出。如果您的数据类型选择(或设计表的人的数据类型选择)本身就无法转换为日期(更不用说转换为特定格式的字符串)让垃圾进入你的 table 。请修复它。或者询问设计该表的人(再次,非常好)来修复它。

关于sql - 将 YYYYMMDD 转换为 DATE,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15317321/

36 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com