有没有办法格式化查询中字段的日期?

时间:2013-02-28 21:52:42

标签: javascript sql date format

我收到一个不受欢迎日期格式的字段的查询(Thu Feb 21 00:00:00 EST 2013) 有没有办法将其修改为mm-dd-yyy?

我正在使用javascript,我找到了一种php方式来做,但遗憾的是它必须是在javascript中,所以指令必须与TOAD中的方式非常相似。

我尝试了CONVERT()方法但它没有用。我不确定我是否正在使用它

5 个答案:

答案 0 :(得分:1)

Convert()函数可以使用,但您需要使用正确的格式代码: SQL Convert() Function

SELECT Convert(char(10), @date, 110)

答案 1 :(得分:0)

Date.js对于日期格式化非常方便。

答案 2 :(得分:0)

您可以使用JS中的基本Date对象函数。

首先,创建日期变量:

var date = new Date('your date value');

然后您可以访问各个日期部分:

var month = date.getMonth() + 1;  //gets the month . . . it's 0-based, so add 1
var day = date.getDate();         //gets the day of the month
var year = date.getFullYear();    //gets the 4-digit year

获得这些值后,您可以以任何您喜欢的格式连接它们。对于基本的mm-dd-yyyy,请使用:

var formattedDate = month + "-" + day + "-" + year;

还有时间和时区值。

答案 3 :(得分:0)

你可能会尝试转换为unix时间戳,然后格式化。我没有测试过这个,它可能会引发错误,但你明白了。

var input = your date;
input = input.split(" - ").map(function (date){
return Date.parse(date+"-0500")/1000;
}).join(" - ");

var year = input.getYear();
var month = input.getMonth();
var day = input.getDay();
var hours = input.getHours();
var minutes = input.getMinutes();
var seconds = input.getSeconds();
var formatted = month + " " + day + ", " + year + " at " hours + ':' + minutes + ':' +     seconds;

答案 4 :(得分:0)

这是一种非常混乱的格式。有两种基本方法可以修改它,一种是重新排序你拥有的位,另一种是将它转换为日期对象并使用它来创建新的字符串。无论哪种方式,你都没有说过如何处理时区偏移。

使用时区的缩写或名称是不明确的,它们没有标准,有些是重复的(EST用于三个不同的时区)。无论如何,简单的重新排序可以是:

function formatDate(s) {
  var months = {jan:'01', feb:'02', mar:'03', apr:'04',
                may:'05', jun:'06', jul:'07', aug:'08',
                sep:'09', oct:'10', nov:'11', dec:'12'};
  var s = s.split(' ');
  var d = (s[2] < 10? '0' : '') + s[2]; 

  return months[s[1].toLowerCase()] + '-' + d + '-' + s[5];
}

alert(formatDate('Thu Feb 21 00:00:00 EST 2013')); // 02-21-2013

输出格式(mm-dd-yyyy)含糊不清,请考虑使用2013年2月21日或ISO8601(2013-02-21)等标准格式。

如果您需要考虑时区,则可以更轻松地创建日期对象,添加偏移量,然后返回新日期。但是,您还需要弄清楚如何将字符串时区转换为可与日期一起使用的数字(最好是分钟,但小时可以)。