June 20th, 2006

getting the current date in a particular format in Windows XP/2003

I needed to get the current date, in the format ‘yyyy-MM-dd’, and use that value multiple times within a batch file.

The command ‘DATE /T’ returns a date like this:
Tue 06/20/2006

But I needed:
2006-06-20

Now, this would have been extraordinarily easy, if I could use 4nt, cygwin, nclip, or any number of other tools. However, my options were limited on the machine that I needed to run this on, as it is a production web application server. So, I had to come up with a way to do this using the tools I had available to me:
- Windows 2003 Server (assumed to be a default installation, or more minimal than that)
- Sybase ASE 12.5.x
- Java

I probably could have just written a simple java application to do this, but where’s the fun in THAT? :)

So, I consulted with my good friend, Jeff Scanlon, as I usually do when I have an interesting tech challenge, and together we came up with this batch file [NOTE: you can download it here, if the code gets too munged with the blogger html/css]:

—— BEGIN BATCH FILE ——-

@echo off
REM generate SQL script to get date in correct format:
echo select ’set my_date=’ + str_replace(convert(char(20),getdate(),102),’.',’-') >%TEMP%\getDate_yyyy-MM-dd.sql
echo go >>%TEMP%\getDate_yyyy-MM-dd.sql

REM run the SQL script to generate a simple, temporary batch file:
isql -U username -P password -i %TEMP%\getDate_yyyy-MM-dd.sql | findstr set >%TEMP%\set_my_date.bat

REM run the temporary batch file, which will set an environment variable, ‘MY_DATE’, to contain the date:
call %TEMP%\set_my_date.bat

REM clean up
del /q %TEMP%\set_my_date.bat
del /q %TEMP%\getDate_yyyy-MM-dd.sql

REM this is where you’d actually put code that uses the date, like:
REM md c:\backup\%MY_DATE%
REM copy c:\mystuff\*.* c:\backup\%MY_DATE%

—— END BATCH FILE ——-

November 23rd, 2005

Simple column name list in sybase with sqsh

At my current job, we primarily use Sybase ASE for our database servers. For most of my querying needs, I use a nice little tool called sqsh, a handy replacement for the basic Sybase ‘isql’.

I hate the excessive amounts of output that sybase gives me when I do ‘sp_help [table_name]‘, because most of the time all I’m trying to do is get a list of column names for a particular table.

MySql’s ’show databases’, ’show tables’, ’show columns’, etc. seem so much more intuitive to me.

So, a couple days ago I chained together a few tools, and created an alias + function combo that let me simply type ‘show_columns [table_name]‘, and get nothing but a quick list of column names.

Here is what I added to my .sqshrc file to make this a permanent addition to my collection of useful commands

\func show_columns_func
\echo Column list for table: ${1}
sp_help ${1}; -m vert grep “Column_name:” \sed -e ’s/Column_name: *\([^ ]\)/\1/g’
\done
\alias show_columns=”\call show_columns_func ”