将dd/MM/yyyy输入转换为日期格式的yyyy-MM-dd,而不是varchar/datetime
本文关键字:yyyy-MM-dd datetime varchar 日期 yyyy MM dd 输入 转换 格式 | 更新日期: 2023-09-27 17:59:07
经过一整天的搜索,我无法找到解决方案,面临多个转换错误。主要目标是将dd/MM/yyyy
转换为yyyy-MM-dd
"日期"格式以适应SQL Server。
我的表中有一个SQL Server 2012数据库,数据类型为date
。
我在我的项目网站上使用了一个带有jQuery-1.4.1-vsdoc.js的jQuery日期选择器,它输出使用获得的dd/MM/yyyy
Dim dDate As DateTime = DateTime.Parse(Request.Form(txtStart.UniqueID))
然后,我尝试使用获得的日期执行插入SQL,但数据库日期格式为yyyy-MM-dd
。
尝试过,但不起作用:
SELECT CONVERT(date, CONVERT(DATETIME, '14/10/2011', 0), 120)
尝试过这个,它工作了,但它是varchar
数据类型,这不是我需要的
SELECT REPLACE(CONVERT(VARCHAR(10), '15/4/2014', 111), '/', '-') AS [YYYY-MM-DD]
我真的需要一个代码,无论是在我的网站VB/C#代码还是SQL语句,请帮助
我使用jQuery的脚本已经用代码编写了我的sql当前设置的格式,但在运行时它不应用
<script type="text/javascript">
$(document).ready(function () {
$("#<%=txtStart.ClientID %>").dynDateTime({
showsTime: false,
ifFormat: "%Y-%m-%d ",
daFormat: "%l;%M %p, %e %m, %Y",
align: "BR",
electric: false,
singleClick: false,
displayArea: ".siblings('.dtcDisplayArea')",
button: ".next()"
});
});
</script>
主要目标是将dd/MM/yyyy转换为yyyy-MM-dd"日期"格式,以适应SQL
不要!您应该尽可能避免字符串转换。尽可能长时间地保持数据的自然表示。
您可能需要首先解析从dd/MM/yyyy
到DateTime
的日期(尽管如果您可以避免这种情况,请这样做-我们不知道您的数据来自哪里),但您应该将其保留为DateTime
。请改用参数化SQL,将参数值作为DateTime
传递给数据库。当然,您还应该确保数据库中的字段使用适当的类型作为开头(而不是varchar
)。确保你的模式与你的数据相匹配对于运行一个健全的系统至关重要。
解析部分应该相对简单。例如:
DateTime date = DateTime.ParseExact(text, "dd/MM/yyyy",
CultureInfo.InvariantCulture);
您可能希望使用用户的区域性(取决于数据的来源),并且您也可能
您必须记住,DateTime
没有格式。如果您想将一些日期字符串转换为DateTime,并且如果您预先知道日期格式,则可以使用DateTime.ParseExact()
试试这个:
string strDate = "21/04/2014";
DateTime dt = DateTime.ParseExact(strDate,"dd/MM/yyyy",
CultureInfo.InvariantCulture);
现在您可以将DateTime变量dt
存储到数据库中,但如果您想以某种格式(例如:yyyy-MM-dd)显示DateTime,则需要调用ToString()
,如下所示
String datetime = dt.ToString("yyyy-MM-dd");
使用dateFormat
选项
$(function(){
$("#to").datepicker({ dateFormat: 'yy-mm-dd' });
$("#from").datepicker({ dateFormat: 'yy-mm-dd' }).bind("change",function(){
var minValue = $(this).val();
minValue = $.datepicker.parseDate("yy-mm-dd", minValue);
minValue.setDate(minValue.getDate()+1);
$("#to").datepicker( "option", "minDate", minValue );
})
});
此处演示
我们可以在使用InvariantCulture的同时尝试ParseExact方法。这提供了有关特定文化的信息。信息包括区域性名称、书写系统(在您的情况下为yyyy-MM-dd)等。
String MyDateString;
DateTime MyDateTime;
MyDateString = txtDateOfIncidence.Text.Trim()+ " " + txtTiming.Text.Trim();
MyDateTime = DateTime.ParseExact(MyDateString, "yyyy/MM/dd" + " hh:mm tt", System.Globalization.CultureInfo.InvariantCulture);