sqlserver中的AnnotationChart日期格式
嗨,我正在尝试实现一个从SQLServer获取数据的注释图表。当数据返回时,代码正在工作。我的问题是执行google.visualization.DataTable.addRow时日期/日期时间的格式 sqlserver返回的日期格式为2014-03-19 12:00:00 AM 如何更改此日期格式以插入数据表sqlserver中的AnnotationChart日期格式,sql,datetime,google-visualization,data-visualization,Sql,Datetime,Google Visualization,Data Visualization,嗨,我正在尝试实现一个从SQLServer获取数据的注释图表。当数据返回时,代码正在工作。我的问题是执行google.visualization.DataTable.addRow时日期/日期时间的格式 sqlserver返回的日期格式为2014-03-19 12:00:00 AM 如何更改此日期格式以插入数据表 <%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Defaul
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %>
<%@ Register Assembly="AjaxControlToolkit" Namespace="AjaxControlToolkit" TagPrefix="asp" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title></title>
<script src="js/jquery.min.js" type="text/javascript"></script>
<script type='text/javascript' src='http://www.google.com/jsapi'></script>
<script type="text/javascript">
google.load('visualization', '1.1', { packages: ['annotationchart'] });
</script>
<script type="text/javascript">
$(document).ready(function () {
$.ajax({
type: 'POST',
dataType: 'json',
contentType: 'application/json',
url: 'Default.aspx/GetData',
data: '{}',
success:
function (response) {
drawVisualization(response.d);
}
});
})
function drawVisualization(dataValues) {
var data = new google.visualization.DataTable();
data.addColumn('datetime', 'Column Name');
data.addColumn('number', 'Column Value');
data.addColumn('number', 'Column Value2');
console.log(dataValues[0].ColumnName);
for (var i = 0; i < dataValues.length; i++) {
data.addRow([dataValues[i].ColumnName, dataValues[i].Value, dataValues[i].Value2]);
}
var formatter = new google.visualization.DateFormat({pattern: 'yyyy-MM-dd'});
var chart = new google.visualization.AnnotationChart(document.getElementById('visualization'));
var options = {
displayAnnotations: false,
};
chart.draw(data, options);
}
</script>
</head>
<body>
<form id="form1" runat="server">
<div id="visualization" style="width: 1000px; height: 500px;">
</div>
</form>
</body>
</html>
这是后面的C代码
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Data;
using System.Data.SqlClient;
using System.Web.Services;
using System.Configuration;
public partial class _Default : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
}
[WebMethod]
public static List<Data> GetData()
{
SqlConnection conn = new SqlConnection(****);
DataSet ds = new DataSet();
DataTable dt = new DataTable();
conn.Open();
string cmdstr = "select LogDate, val1, val2from [vwTest]";
SqlCommand cmd = new SqlCommand(cmdstr, conn);
SqlDataAdapter adp = new SqlDataAdapter(cmd);
adp.Fill(ds);
dt = ds.Tables[0];
List<Data> dataList = new List<Data>();
string cat = "";
int val = 0;
int val2 = 0;
foreach (DataRow dr in dt.Rows)
{
cat = dr[0].ToString();
val = Convert.ToInt32(dr[1]);
val2 = Convert.ToInt32(dr[2]);
DateTime dte = DateTime.Parse(DateTime.Parse(cat).ToString("yyyy-MM-dd"));
dataList.Add(new Data(dte, val, val2));//Dont know what to do here
}
return dataList;
}
public class Data
{
public DateTime ColumnName;
public int Value = 0;
public int Value2 = 0;
public Data(DateTime columnName, int value, int value2)
{
ColumnName = columnName;
Value = value;
Value2 = value2;
}
}
}
我看到一些例子,人们使用新的日期2013、23、3、4、5,但我没有硬编码我的数据
请帮忙。这是我第一次尝试使用谷歌可视化API,当您通过JSON发送数据时,日期很难处理,因为JSON没有日期标准。将它们作为正确的日期对象输入的唯一方法是使用完整的JSON DataTable语法来指定数据的行、列和单元格。因为我不太确定这在C语言中是如何实现的,所以我可以为您演示另一种方法。由于您的DataTable需要日期对象,并且您的输出为您提供了日期字符串,因此将字符串解析为年、月和日是一项相对简单的任务,然后根据这些内容构建日期对象:
for (var i = 0; i < dataValues.length; i++) {
// assumes the date string is in the format "yyyy-MM-dd"
var dateArr = dataValues[i].ColumnName.split('-');
var year = dateArr[0];
var month = dateArr[1] - 1; // adjust for javascript's 0-indexed months
var day = dateArr[2];
data.addRow([new Date(year, month, day), dataValues[i].Value, dataValues[i].Value2]);
}
好的,谢谢你的帮助。我最终从sql server发送了日期,并按照您所说的那样建立了它。谢谢你的回复。你的方法也会奏效。