【问题标题】:Convert a java date (time) pattern string to a SQL date pattern string将 java 日期(时间)模式字符串转换为 SQL 日期模式字符串
【发布时间】:2012-03-07 11:17:54
【问题描述】:

有没有一种简单的方法来转换 java 中给出的日期模式字符串 到 SQL 可用的等效日期模式,除了大量的 string.replace() - 调用?

例如。我想在 java 中执行以下操作:

String sqlDatePattern = myTranslator.translateToSQLPattern("dd.MM.yyyy HH:mm:ss"); 
/*expected result: dd.MM.yyyy HH24:MI:ss*/

最好的问候!

【问题讨论】:

  • 退后一步:您为什么一开始就尝试将日期格式化为文本?使用参数化查询,您根本不需要这样做。
  • 我一开始就不把日期当成参数;我的目标是在我的应用程序逻辑中的某处有一个国际化机制,它会为每个语言环境生成日期模式字符串。现在我想在我的数据库中的选择中使用这个模式字符串:"SELECT to_char("myDate", '') FROM "MyTable"; 现在我想在这个 SELECT 上执行 COPY TO CSV-声明以便将结果导出到 csv 文件。为了保持它的可读性,我想做提及转换。
  • CSV 是必须的吗?否则我会推荐 XML,它更容易解析并支持日期数据类型。

标签: java sql date design-patterns


【解决方案1】:

你想用这个 sqlDatePattern 字符串做什么?如果要在 SQL 语句中使用它,请考虑以下方法:

  • 根据您的原始日期模式创建 java.sql.Date/Time/Timestamp

  • 使用 PreparedStatement 并将创建对象作为参数传递

使用 PreparedStatements,您不必担心确切的格式,它可以保护您免受 SQL 注入。

【讨论】:

  • 见上文;我既不是在谈论作为参数的日期,也不是在谈论 java 日期/时间戳。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-08-10
  • 1970-01-01
  • 1970-01-01
  • 2019-04-12
  • 1970-01-01
  • 1970-01-01
  • 2017-02-14
相关资源
最近更新 更多