1005. Spell It Right (20)(to_string)

C++中int转string
本文介绍了在C++中如何将整型变量转换为字符串类型,并提供了使用std::to_string的具体示例。注意该方法需要C++11或更高版本的支持。

每每都是 int 转 string 得想半天用什么函数
好的,现在终于记下来了

#include <string>

int main()
{
  std::string s = std::to_string(42);
}

在 g++ 编译的时候可能会有 error

g++ -std=c++11 main.cpp

用这样类似的方法来编译。
好的,差不多了,题目是很简单,就不说来。

记住!

UncategorizedAdoException:CommandCallback; uncategorized DataException for SQL [select t.task_id as DOCTASK_ID, t.task_type_id, t.task_name, m.task_dealt_state as TASK_STATE, '' as TASK_LEVEL, m.task_dealt_doc as DOC_ID, t.pid, t.visit_type, t.patient_id, '' as APP_ARGS, m.task_dealt_doc as HANDLE_OPER, m.task_dealt_date as HANDLE_DATE, m.task_dealt_memo as HANDLE_MEMO, '' as TOP_NO, t.create_date, t.oper_code, t.oper_date, t.third_code, P.Name AS PATIENT_NAME, (SELECT D.DISEASE_NAME FROM V_MET_CMN_DIAGNOSE D WHERE D.PID = T.PID AND ROWNUM <= 1) AS PATIENT_DIAGNOSE, P.Birthday AS PATIENT_BIRTHDAY, P.Sex_Code AS SEX_CODE, '' as ENGLISH_NAME, P.Spell_Code, '' as WB_CODE, '' AS DIAG_SPELL, '' AS DIAG_WUBI, t.child_type_id, r.is_focus as major_link_id --1是重点提醒 from met_portal_tasklist t, met_portal_taskdealt m, v_fin_ipr_inmaininfo P,qcm_connotation_rule r where t.task_id = m.task_id and (m.task_dealt_doc = :DOC_CODE OR m.task_dealt_doc = 'ALL') and t.pid = p.Inpatient_No and t.pid = :INPATIENT_NO and t.create_date >= to_date(:BEGIN_DATE,'yyyy-MM-dd HH24:mi:ss') and t.create_date < to_date(:END_DATE,'yyyy-MM-dd HH24:mi:ss') and t.major_link_id = r.rule_code(+) ]; ErrorCode [-2147467259]; ORA-01847: 月份中日的值必须介于 1 和当月最后一日之间 OracleException:ORA-01847: 月份中日的值必须介于 1 和当月最后一日之间 在 Spring.Data.Generic.AdoTemplate.Execute[T](IDbCommandCallback`1 action) 在 Spring.Data.Generic.AdoTemplate.QueryWithResultSetExtractor[T](CommandType commandType, String cmdText, IResultSetExtractor`1 resultSetExtractor, IDbParameters parameters) 在 Spring.Data.Generic.AdoTemplate.QueryWithRowMapper[T](CommandType cmdType, String cmdText, IRowMapper`1 rowMapper, IDbParameters parameters) 在 Neusoft.Dawn.Core.Dal.SqlMstExecutor.QueryWithRowMapper[T](String[] keys, IRowMapper`1 rowMapper, IDictionary`2 parameters) 在 Neusoft.Dawn.Core.Dal.SqlMstExecutor.QueryWithRowMapper[T](String key, IRowMapper`1
10-16
`ORA-01847` 错误表明在日期转换时,输入的日期中“日”的值超出了该月份的有效范围。此错误通常是由于输入的日期字符串不符合预期格式,或者“日”的值不在对应月份的合理区间内。而 `UncategorizedAdoException` 一般是 `Spring` 框架在处理数据库操作异常时抛出的通用异常,它可能是由 `ORA-01847` 错误引发的。 ### 可能的原因及解决办法 #### 1. 输入日期字符串格式有误 在 SQL 查询里使用了 `to_date(:BEGIN_DATE,'yyyy-MM-dd HH24:mi:ss')` 和 `to_date(:END_DATE,'yyyy-MM-dd HH24:mi:ss')` 来转换日期字符串。若输入的日期字符串格式与指定格式不匹配,就会产生 `ORA-01847` 错误。 **解决办法**: 要保证传入的 `:BEGIN_DATE` 和 `:END_DATE` 参数是符合 `yyyy-MM-dd HH24:mi:ss` 格式的字符串。例如,正确的格式应该是 `2024-01-31 12:00:00`。 #### 2. “日”的值超出范围 输入的日期字符串里“日”的值超出了对应月份的有效范围,像 2 月有 30 日这样的情况。 **解决办法**: 在传入日期之前,对日期进行验证,确保“日”的值在对应月份的合理区间内。可以借助编程语言的日期处理函数来验证和格式化日期。 以下是使用 Java 进行日期验证和格式化的示例: ```java import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Date; public class DateValidator { public static String validateAndFormatDate(String dateStr) throws ParseException { SimpleDateFormat inputFormat = new SimpleDateFormat("yyyy-MM-dd HH24:mi:ss"); SimpleDateFormat outputFormat = new SimpleDateFormat("yyyy-MM-dd HH24:mi:ss"); Date date = inputFormat.parse(dateStr); return outputFormat.format(date); } } ``` #### 3. 数据库会话日期格式设置问题 数据库会话的日期格式设置可能与 SQL 查询中指定的格式不一致。 **解决办法**: 在执行 SQL 查询之前,设置数据库会话的日期格式。在 Oracle 中,可以使用以下语句: ```sql ALTER SESSION SET NLS_DATE_FORMAT = 'yyyy-MM-dd HH24:mi:ss'; ``` ### 示例代码 假设使用 Java 和 JDBC 执行 SQL 查询,以下是一个示例代码: ```java import java.sql.Connection; import java.sql.DriverManager; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; import java.text.ParseException; public class QueryExample { public static void main(String[] args) { String url = "jdbc:oracle:thin:@localhost:1521:orcl"; String username = "your_username"; String password = "your_password"; try (Connection conn = DriverManager.getConnection(url, username, password)) { // 设置会话日期格式 String setDateFormatSql = "ALTER SESSION SET NLS_DATE_FORMAT = 'yyyy-MM-dd HH24:mi:ss'"; try (PreparedStatement setDateFormatStmt = conn.prepareStatement(setDateFormatSql)) { setDateFormatStmt.execute(); } String sql = "select t.task_id as DOCTASK_ID, t.task_type_id, t.task_name, m.task_dealt_state as TASK_STATE, '' as TASK_LEVEL, m.task_dealt_doc as DOC_ID, t.pid, t.visit_type, t.patient_id, '' as APP_ARGS, m.task_dealt_doc as HANDLE_OPER, m.task_dealt_date as HANDLE_DATE, m.task_dealt_memo as HANDLE_MEMO, '' as TOP_NO, t.create_date, t.oper_code, t.oper_date, t.third_code, P.Name AS PATIENT_NAME, (SELECT D.DISEASE_NAME FROM V_MET_CMN_DIAGNOSE D WHERE D.PID = T.PID AND ROWNUM <= 1) AS PATIENT_DIAGNOSE, P.Birthday AS PATIENT_BIRTHDAY, P.Sex_Code AS SEX_CODE, '' as ENGLISH_NAME, P.Spell_Code, '' as WB_CODE, '' AS DIAG_SPELL, '' AS DIAG_WUBI, t.child_type_id, r.is_focus as major_link_id --1是重点提醒 from met_portal_tasklist t, met_portal_taskdealt m, v_fin_ipr_inmaininfo P,qcm_connotation_rule r where t.task_id = m.task_id and (m.task_dealt_doc = ? OR m.task_dealt_doc = 'ALL') and t.pid = p.Inpatient_No and t.pid = ? and t.create_date >= to_date(?,'yyyy-MM-dd HH24:mi:ss') and t.create_date < to_date(?,'yyyy-MM-dd HH24:mi:ss') and t.major_link_id = r.rule_code(+)"; try (PreparedStatement stmt = conn.prepareStatement(sql)) { // 设置参数 stmt.setString(1, "DOC_CODE_VALUE"); stmt.setString(2, "INPATIENT_NO_VALUE"); String beginDate = "2024-01-31 12:00:00"; String endDate = "2024-02-29 12:00:00"; // 假设输入有误,这里可以使用 DateValidator 进行验证 try { beginDate = DateValidator.validateAndFormatDate(beginDate); endDate = DateValidator.validateAndFormatDate(endDate); } catch (ParseException e) { e.printStackTrace(); } stmt.setString(3, beginDate); stmt.setString(4, endDate); try (ResultSet rs = stmt.executeQuery()) { while (rs.next()) { // 处理结果集 System.out.println(rs.getString("DOCTASK_ID")); } } } } catch (SQLException e) { e.printStackTrace(); } } } ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值