注册 登录
编程论坛 SQL Server论坛

sql日期格式问题?#附近有语法错误

扬帆起航2 发布于 2016-09-20 22:43, 2697 次点击
代码如下:
A2 = Format(A1, "yyyy-mm-dd")
SQL = "select M1,M2,M3,M4,M5,M6,M7,M8 FROM AA02 where CONVERT(varchar(100),riq,23)=#" & A2 & "#"
    rs.CursorLocation = 3
     rs.Open SQL, conn, 1, 3

1、错误一:format不是可以识别的内置函数
select M1,M2,M3,M4,M5,M6,M7,M8 FROM AA02 where Format(riq,'yyyy/mm/dd')=#" & A2 & "#
百度得,access中format可以用,sql server不可以
2、错误二:#附近有语法错误
SQL = "select M1,M2,M3,M4,M5,M6,M7,M8 FROM AA02 where convert(varchar(10),riq,120)=#" & A2 & "#"
监视为:
select M1,M2,M3,M4,M5,M6,M7,M8 FROM AA02 where riq=#2014-06-01#
3、错误三:#附近有语法错误
发现,120不对,改为23
SQL = "select M1,M2,M3,M4,M5,M6,M7,M8 FROM AA02 where CONVERT(varchar(100),riq,23)=#" & A2 & "#"

抓狂,不就是CONVERT吗,前后的语句看着也没啥啊?

PS:不知道是VB还是sql板块合适,想尽快得到答案,崩溃中啊,所以两边都发了,不知道有问题不,版主见谅。

4 回复
#2
梦幻倩影2016-09-22 09:30
sql中可以直接日期=日期变量的
select M1,M2,M3,M4,M5,M6,M7,M8 FROM AA02 where riq='2016-09-20'
#3
梦幻倩影2016-09-22 10:33
CONVERT() 函数只是实现返回 用不同的格式显示日期或时间


Style ID    Style 格式
100 或者 0    mon dd yyyy hh:miAM (或者 PM)
101    mm/dd/yy
102    yy.mm.dd
103    dd/mm/yy
104    dd.mm.yy
105    dd-mm-yy
106    dd mon yy
107    Mon dd, yy
108    hh:mm:ss
109 或者 9    mon dd yyyy hh:mi:ss:mmmAM(或者 PM)
110    mm-dd-yy
111    yy/mm/dd
112    yymmdd
113 或者 13    dd mon yyyy hh:mm:ss:mmm(24h)
114    hh:mi:ss:mmm(24h)
120 或者 20    yyyy-mm-dd hh:mi:ss(24h)
121 或者 21    yyyy-mm-dd hh:mi:ss.mmm(24h)
126    yyyy-mm-ddThh:mm:ss.mmm(没有空格)
130    dd mon yyyy hh:mi:ss:mmmAM
131    dd/mm/yy hh:mi:ss:mmmAM

我们将使用 GETDATE() 函数来获得当前的日期/时间:
CONVERT(VARCHAR(19),GETDATE())
CONVERT(VARCHAR(10),GETDATE(),110)
CONVERT(VARCHAR(11),GETDATE(),106)
CONVERT(VARCHAR(24),GETDATE(),113)
结果类似:
Dec 29 2008 11:45 PM
12-29-2008
29 Dec 08
29 Dec 2008 16:25:46.635
#4
mywisdom882016-09-22 12:29
以下是引用扬帆起航2在2016-9-20 22:43:03的发言:

代码如下:
A2 = Format(A1, "yyyy-mm-dd")
SQL = "select M1,M2,M3,M4,M5,M6,M7,M8 FROM AA02 where CONVERT(varchar(100),riq,23)=#" & A2 & "#"
    rs.CursorLocation = 3
     rs.Open SQL, conn, 1, 3

1、错误一:format不是可以识别的内置函数
select M1,M2,M3,M4,M5,M6,M7,M8 FROM AA02 where Format(riq,'yyyy/mm/dd')=#" & A2 & "#
百度得,access中format可以用,sql server不可以
2、错误二:#附近有语法错误
SQL = "select M1,M2,M3,M4,M5,M6,M7,M8 FROM AA02 where convert(varchar(10),riq,120)=#" & A2 & "#"
监视为:
select M1,M2,M3,M4,M5,M6,M7,M8 FROM AA02 where riq=#2014-06-01#
3、错误三:#附近有语法错误
发现,120不对,改为23
SQL = "select M1,M2,M3,M4,M5,M6,M7,M8 FROM AA02 where CONVERT(varchar(100),riq,23)=#" & A2 & "#"

抓狂,不就是CONVERT吗,前后的语句看着也没啥啊?

PS:不知道是VB还是sql板块合适,想尽快得到答案,崩溃中啊,所以两边都发了,不知道有问题不,版主见谅。

SQL 好像不能用 # ,要用<> ,估计是因为 在sql2000版本中,#表A,是表示 表A 是临时表的意思
#5
梦幻倩影2016-09-22 13:47
CONVERT(varchar(100),riq,23) 输出的日期是 字符串格式,所以等号右边也应该是字串,可以用单引号,但不能用#
1