gpt4 book ai didi

sql-server - SQL Server 2008 将 varchar 转换为日期时间

转载 作者:行者123 更新时间:2023-12-04 06:42:15 25 4
gpt4 key购买 nike

我遇到了一个问题,将一个表中的 VARCHAR 转换为 DATETIME,然后在比较中使用它。所有记录的格式 ('2010-09-02 10:38:31.000') 似乎都是正确的,我可以毫无问题地选择数据。但是,如果我尝试在 WHERE 子句中使用新的日期时间,则会出现错误:从字符串转换日期和/或时间时转换失败。

所以只是要清楚,这是有效的:

SELECT Field1, Field2, CAST(Field3 AS DATETIME) AS DateTaken FROM MyTable;

这将按预期返回所有数据,并且没有空日期。以下失败并出现前面提到的错误。
SELECT Field1, Field2 FROM MyTable WHERE CAST(Field3 AS DATETIME) > @startDate;

我尝试使用 View 来检索数据,但它有同样的错误。接下来我尝试为这样的数据创建一个临时表......
SELECT Field1, Field2, CAST(Field3 AS DATETIME) AS Field3 INTO _MyTable;
SELECT Field1, Field2 FROM _MyTable WHERE Field3 > @startDate;

哪个成功。

我所有的搜索只会导致格式不正确的日期和/或区域设置导致 havok,这在我的情况下似乎不是原因。我不想每次需要使用 DATETIME 转换时都创建一个表,那么我在这里做错了什么?非常感谢帮助!

最佳答案

编辑 #3................

  select * from test 
where case isdate(field3) when 1
then CAST(field3 as datetime) else null end > @startdate

编辑#2................

我对我的数据库进行了测试...
declare @startdate datetime

select @startdate = '09/1/2010'

Create table test (field1 varchar(50), field2 varchar(50), field3 varchar(50))


insert into test
select 'test' as field1, 'test' as field2, '2010-09-02 10:38:31.000' as field3

insert into test
select 'test2' as field1, 'test2' as field2, '2010-09-02 10:38:31.000' as field3

insert into test
select 'test3' as field1, 'test3' as field2, '2010-10-02 10:38:31.000' as field3

select * from test where CAST(field3 as datetime) > @startdate

select * from test where Convert(datetime, field3) > @startdate

drop table test

结果:
test    test    2010-09-02 10:38:31.000
test2 test2 2010-09-02 10:38:31.000
test3 test3 2010-10-02 10:38:31.000


test test 2010-09-02 10:38:31.000
test2 test2 2010-09-02 10:38:31.000
test3 test3 2010-10-02 10:38:31.000

将 startdate 参数更改为 10/1/2010
结果:
test3   test3   2010-10-02 10:38:31.000

test3 test3 2010-10-02 10:38:31.000

第一个回应………………
你试过转换吗?
SELECT Field1, Field2 FROM MyTable WHERE CONVERT(DateTime, Field3) > @startdate;

关于sql-server - SQL Server 2008 将 varchar 转换为日期时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4093461/

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