将文本数据类型字段转换为日期时间

发布于 2024-09-24 19:51:41 字数 432 浏览 2 评论 0原文

我正在使用 SQL Server 2000,并且我的 ERP 供应商使用文本数据类型字段来保存日期。

日期看起来像:

6/21/2001

但是,其中一些是空白的。

我尝试过使用类似的方法

select coalesce(nullif(fdelivery, ''), '1/1/1900') FROM sorels 

来删除空白,但无济于事。

我也尝试过:

case 
        when ltrim(rtrim(SOR.fdelivery)) = ''

删除空白无济于事。

即使我可以用看起来像日期的内容替换空白,我如何将字段转换或转换为日期时间(来自文本),以便我的报告程序知道它实际上是日期字段而不是文本。

I'm using SQL Server 2000 and my ERP vendor has used a Text datatype field to hold Dates.

The Dates look like:

6/21/2001

However, some of them are blank.

I've tried using something like:

select coalesce(nullif(fdelivery, ''), '1/1/1900') FROM sorels 

to remove the blanks to no avail.

I've also tried:

case 
        when ltrim(rtrim(SOR.fdelivery)) = ''

to remove blanks to no avail.

Even if I can substitute the blanks with something that looks like a date, how can I convert or cast the field to be datetime (from Text) so that my reporting program knows that it is in fact a Date field and not Text.

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

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

发布评论

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

评论(2

浅听莫相离 2024-10-01 19:51:41

啊,我找到了一个方法:

select 
Case
when isdate(SUBSTRING(fdelivery, 1,11)) = 1
then cast(SUBSTRING(fdelivery, 1,11) as datetime)
else cast('1/1/1900' as datetime)
end
as DateConvert
from sorels

这个可以。它将文本字段的日期“部分”进行子串化,我猜它隐式地将其转换为 Char 数据类型,然后我可以将其转换为日期时间。

Ah, I found a method:

select 
Case
when isdate(SUBSTRING(fdelivery, 1,11)) = 1
then cast(SUBSTRING(fdelivery, 1,11) as datetime)
else cast('1/1/1900' as datetime)
end
as DateConvert
from sorels

This will work. It substrings out the date "portion" of the text field which I guess implicitly converts it to a Char datatype and then I can cast that as a datetime.

彩扇题诗 2024-10-01 19:51:41

我已经有一段时间没有使用 SQL Server 2000 了,但是如果 ISDATE 函数可用,您可以像这样使用它:

SELECT CAST((CASE WHEN ISDATE(CAST(fdelivery as varchar(20)) = 0 THEN '1-1-1900' ELSE CAST(fdelivery as varchar(20)) END) AS datetime) 
FROM sorels

It's been a while since I used SQL Server 2000, but if the ISDATE function is available, you could use it like this:

SELECT CAST((CASE WHEN ISDATE(CAST(fdelivery as varchar(20)) = 0 THEN '1-1-1900' ELSE CAST(fdelivery as varchar(20)) END) AS datetime) 
FROM sorels
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文