回答

收藏

如何将varchar转换/转换为日期?

技术问答 技术问答 376 人阅读 | 0 人回复 | 2023-09-14

我varchar(mm-dd-yyyy)在mySQL 5.1中有一个数据类型的日期列。如何将其转换为DATE?
% Y: v1 z; r! |* g# `( D这是我到目前为止所拥有的-, S) O- B2 U' S/ X9 G4 I. d4 s
SELECT id, date
0 r5 [. }3 ^: ]5 T8 s% x0 }FROM tableName ; }5 Z) s: N/ U. W0 J9 R3 k# ~; H' A
WHERE (CAST((SUBSTRING (date FROM 7 FOR 4 )||'/'||SUBSTRING (date FROM 4 FOR 2 )||'/'||SUBSTRING (date FROM 1 FOR 2 )) AS DATE) >= '01/01/2012' )
! H  V6 ?/ Y* m; |4 WORDER BY date DESC;
2 Y: L/ \$ |- p2 O+ y' T得到这个9 V9 ^9 u, T2 d+ l$ R  Y: p8 l
9 O+ y7 o/ ^2 ~% Q: ~4 b3 D
错误-#1064-您的SQL语法有错误;查看与您的MySQL服务器版本相对应的手册以获取正确的语法,以在’FROM 7 FOR 4附近使用)& ~; z8 x; A. D& {: V! s' Y

+ B% P: e; \/ n6 g请帮忙。
" Q# W1 g: A1 ^* v+ p               
4 h0 c3 {8 K# G+ g' t解决方案:
# k/ |& `# f( Y4 {! I                9 y' f( T$ c% M& q9 C
) e" b$ I0 f( s  _% w# a

& A: X( S  ^: [1 E5 C1 b                您可以使用MySQL的STR_TO_DATE()功能
$ J! t# g4 M. h3 ?6 `- ~SELECT id, date % j# j2 y& G: E$ V  c
FROM tableName
, y" T/ ?# A2 u+ M2 D$ A- Q1 fWHERE STR_TO_DATE(date,'%Y-%m-%d') >= '01/01/2012' - {+ h' K9 d& ]/ k  M' _
ORDER BY date DESC;
6 Z+ T4 [1 a, B2 T9 Q; f, ?* }$ R尽管我怀疑您使用Unix时间戳会更轻松- `5 t/ B9 J2 ?
SELECT id, date聽
1 L; N# K* q7 f9 J* vFROM tableName聽) h' t. ^! b% ^% B
WHERE UNIX_TIMESTAMP(STR_TO_DATE(date,'%d/%m/%Y')) >= UNIX_TIMESTAMP('01/01/2012')聽
, p0 B2 M' p) \$ Y; ^# \$ Q- K* EORDER BY date DESC;
分享到:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则